最简单的方法:
在线处理:每输入一个数据就进行即时处理,在任何一个地方中止输入,都能正确给出当前值。
int Sum(int A[],int N)
{
int ThisSum,MaxSum;
int i;
ThisSum=MaxSum=0;
for(i=0;i<N;i++)
{
ThisSum+=A[i];//向右累加
if(ThisSum>MaxSum)
MaxSum=ThisSum;//发现更大的和则更新当前结果
else if(ThisSum<0)//如果当前子列和为负数,舍弃,∵不能是后面的和增大
ThisSum=0;
}
return MaxSum;
}
复杂度:T(n)=O(n)。