1 5 1 2 -1 3 -2
5
输入数据很多,推荐使用scanf进行输入
#include<cstdio> #include<iostream> #include<climits> using namespace std; const int MAX=1000010; int a[MAX]={0}; int main() { int n,m,maxsum; scanf("%d",&n); while(n--) { maxsum=-INT_MAX; scanf("%d",&m); for(int i=1;i<=m;++i) { scanf("%d",&a[i]); if(a[i-1]>0) a[i]+=a[i-1]; //递推 if(a[i]>maxsum) maxsum=a[i]; //a[i]只会增大不会减小,最优保存 } printf("%d\n",maxsum); } }
原文地址:http://blog.csdn.net/u014492609/article/details/40748279