動態規劃求解最大連續子串行和

2021-06-14 00:05:44 字數 742 閱讀 5781

問題描述

輸入一組整數,求出這組數字連續子串行和中最大值。也就是只要求出最大子串行的和,不必求出最大的那個序列。例如:

序列:-2 11 -4 13 -5 -2

,則最大連續子串行和為20

序列:-6 2 4 -7 5 3 2 -1 6 -9 10 -2

,則最大連續子串行和為16。

分析能想起來的用動態規劃方法解決的最簡單的題目了。其它方法時間代價過大,動態規劃的時間代價僅為o(n)

設陣列共有n個元素,a[0]~a[n-1]

定義乙個輔助陣列max[n],其中max[i]表示以陣列第i個元素結尾的最大連續子串行的和

則max[i]的取值為下列兩個值的最大值:max[i-1]+a[i], a[i]

最後只需遍歷一邊max陣列,找出其最大值即可

程式原始碼

#include #include int findmax(int a, int num);

int max(int a, int b);

int main()

; int result = findmax(a, 8);

printf("%d", result);

getch();

return 0;

}int findmax(int a, int num)

return result;

}int max(int a, int b)

動態規劃 最大連續子串行和

題目大意就是讓你選出一段和最大的連續序列,當有幾個序列和並列時,選出下標最小的的連續序列。可以採用動態規劃的思想解決,設一連續序列為a 0 a 1 a n 分別以a 0 a 1 a n 結尾的最大序列和為d 0 d 1 d n 若d i 1 0,則d i d i 1 a i 若d i 1 0,則d ...

動態規劃 最大連續子串行和

動態規劃 最大連續子串行和 問題描述 給定乙個數字序列a1,a2,an,求i,j 1 i j n 使得ai aj最大,輸出這個最大和。樣例 211 413 5 2顯然 11 4 13 20 為和最大的選取情況,因此最大和為20 下面介紹動態規劃的做法,複雜度為o n 讀者會發現其實左端點的列舉是沒有...

動態規劃 最大連續子串行和

給定乙個數字序列,a1,a2,an,求i,j 1 i j n 使得ai aj最大,輸出這個最大和。樣例輸入 2 11 4 13 5 2 輸出 20 即11 4 13 20 最大 分析 如果暴力做的話,乙個列舉,需要o n 2 在計算需要o n 一共需要o n 3 因為重複計算的太多了,還是設定乙個d...