當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;
}