求最大子列和问题可以用在线处理法,其复杂度T(N)=O(N);
#include<stdio.h>
#define N 100000
int main()
{
int k,A[N],i,ThisNum, MaxNum;//ThisNum为当前数, MaxNum为最大数
scanf("%d",&k);
for( i = 0; i < k; i++)
{
scanf("%d ",&A[i]);
}
ThisNum = MaxNum = 0;
for( i = 0; i < k; i++)
{
ThisNum += A[i];\\累加
if(ThisNum > MaxNum)\\求最大值
MaxNum = ThisNum;
else if(ThisNum < 0)\\刷新
ThisNum = 0;
}
printf("%d",MaxNum);
return 0;
}