#include <stdio.h>
#include <stdlib.h>
int max(int a[], int n);
int main()
{
int k;
scanf("%d", &k);
int a[k];
for (int i = 0; i < k; i++)
{
scanf("%d", &a[i]);
}
printf("%d",max(a, k));
}
int max(int a[],int n)
{
int i,j,k;
int sum = 0;
int max = 0;
for ( i = 0; i < n; i++)
{
sum=sum+a[i]; //向右累加
if(sum>max)
max=sum; //发现更大的和则更新当前结果
else if(sum<0) //如果当前子列和为负
sum=0; //则不可能使后面的部分和增大,抛弃之
}
if(sum<0)
return 0;
else
return max;
}
“在线”的意思是指每输入一个数据就进行及时处理。