当sum<0时,对于后面的子数组求和是让它变小的累赘,此时更新sum=0,重新计算
当sum>0时,让sum与maxa比较
#include <iostream>
#include<vector>
#include<stdio.h>
using namespace std;
int main()
{
char c=0;
vector<int> a;
int i=0,k,sum,maxa,b;
while(~scanf("%d",&b)){
a.push_back(b);
i++;
}
k=i-1;
sum=maxa=0;
for(i=0;i<=k;i++){
sum+=a[i];
if(sum<0) //小于0,拖累,丢弃
sum=0; //相当于设置起点
if(sum>maxa)
maxa=sum;
}
printf("%d\n",maxa);
return 0;
}