給定乙個數字序列,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),因為重複計算的太多了,還是設定乙個dp陣列,用來儲存當前的狀態,最後只要求dp中最大的值就行了,狀態轉移方程是 dp[i] = max(dp[i-1] + a[i], a[i])
#include#include#includeusing namespace std;
const int maxn =1000+5;
int a[maxn],dp[maxn];
int main()
dp[0]=a[0];
for(int i=1;idp[i-1]) bk=i;
} cout《關鍵是找到狀態轉移方程,這是重點也是思考的方向
動態規劃 最大連續子串行和
題目大意就是讓你選出一段和最大的連續序列,當有幾個序列和並列時,選出下標最小的的連續序列。可以採用動態規劃的思想解決,設一連續序列為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 讀者會發現其實左端點的列舉是沒有...
動態規劃 最大連續子串行和
在刷力扣題的時候遇到了乙個連續子陣列最大和問題,下面是題目的鏈結和描述 輸入乙個整型陣列,陣列中的乙個或連續多個整數組成乙個子陣列。求所有子陣列的和的最大值。要求時間複雜度為o n 輸入 nums 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。時間...