最大子段和 經典dp

2021-08-06 01:12:16 字數 731 閱讀 3425

n個整數組成的序列a11,a22,a33,…,ann, 求該序列如aii+ai+1i+1+…+ajj的連續子段和的最大值。當所給的整數均為負數時和為0。

例如:-2,11,-4,13,-5,-2,和最大的子段為:11,-4,13。和為20。

input

第1行:整數序列的長度n(2 <= n <= 50000)

第2 - n + 1行:n個整數(-10^9 <= aii <= 10^9)

output

輸出最大子段和。

sample input6-2

11-4

13-5

-2sample output20

思路:經典dp, 

dp[i]表示以ai為結尾的連續子串行的最大和

ac**:

#include#include#include#include#include#include#include#include#include#include#include#includetypedef long long ll;

using namespace std;

ll a[50050],dp[55000];

ll max(ll a,ll b)

int main()

if(!flag)

else

printf("%i64d\n",ans);

}return 0;

}

經典dp 最大子段和

n個整數組成的序列a11,a22,a33,ann,求該序列如aii ai 1i 1 ajj的連續子段和的最大值。當所給的整數均為負數時和為0。例如 2,11,4,13,5,2,和最大的子段為 11,4,13。和為20。input 第1行 整數序列的長度n 2 n 50000 第2 n 1行 n個整數...

最大子段和 (dp

n個整數組成的序列a1,a2,a3,ann,求該序列如ai ai 1 aj的連續子段和的最大值。當所給的整數均為負數時和為0。例如 2,11,4,13,5,2,和最大的子段為 11,4,13。和為20。第1行 整數序列的長度n 2 n 50000 第2 n 1行 n個整數 10 9 ai 10 9 ...

dp 最大子段和

注意 在實際問題中可能題目要求至少選乙個,可能可以乙個都不選 只返回最大子段和 include include using namespace std const int maxn 2e5 10 const int inf 0x7fffffff int n int a maxn int maxsum...