思路:不断记录并且比较以当前数字为结尾的一段子段和,对于这个数字而言,有两种选择,一是自成一派,抛弃前面和为负的串,二是强强联合,与前面和为正的串连起来,变成一大串。
#include<stdio.h>
#define max(a,b) a>b?a:b
int a[100001];
int main()
{
int j,k,i,u,y,x,n,m,max,maxson=-100000000;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
a[i]=max(a[i-1]+a[i],a[i]);
maxson=max(maxson,a[i]);
}
printf("%d",maxson);
return 0;
}