最大连续子序列和
问题描述
给定一个数字序列A1,A2,…,An,求i, j(1 <= i <= j <= n,使得Ai + … + Aj最大,输出这个最大和
样例输入
6
-2 11 -4 13 -5 -2
样例输出
20
解释:11 + (-4) + 13 = 20
动态转移方程:dp[i] = max(dp[i] + dp[i-1], dp[i])
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int s[n];
for(int i = 0; i < n; i++){
cin>>s[i];
}
int maxn = s[0];
for(int i = 1; i < n; i++){
s[i] = max(s[i-1] + s[i], s[i]); //动态转移方程
maxn = max(maxn, s[i]); //记录最大值
}
cout<<maxn;
return 0;
}