给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个,例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和为20。
#include<stdio.h>
#include<math.h>
int main()
{
int i,n,a[1000],sum,max;
while(~scanf("%d",&n))
{
max=0;
sum=0;
if(n==0)
break;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
sum+=a[i];
if(sum>max)
{
max=sum;
}
if(sum<0)
{
sum=0;
}
}
printf("%d\n",max);
}
return 0;
}