sum为要求的最大值,该方法只需遍历一次数组,故复杂度为O(n)
若该序列为
1 2 3 -4 -3 8
thissum=1, thissum=3, thissum=6, thissum=2, thissum=0, thissum=8
sum=1, sum=3, sum=6, sum=6, sum=6, sum=8
故最大子列和为8
#include<stdio.h>
#include<stdlib.h>
main()
{
int a[10];
int sum=0;
int thisum=0;
for(int i=0;i<9;i++)
{
scanf("%d",&a[i]);
}
for(int i=0;i<9;i++)
{
thisum+=a[i];
if(thisum<0)
{
thisum=0;
}
if(thisum>sum)
{
sum=thisum;
}
}
puts(" ");
printf("%d",sum);
system("pause");
getchar();
}