最大子段和
给出一个长度为n 的序列 a,选出其中连续且非空的一段使得这段和最大。
如果全是负数,则输出0。
代码
#include<iostream>
#include<cstdio>
using namespace std;
int a,dp[9000010];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a;
dp[i]=max(dp[i-1]+a,a);
}
int mx=0;
for(int i=1;i<=n;i++){
mx=max(mx,dp[i]);
}
cout<<mx;
return 0;
}