求最大子列和问题,我发现了一种特别高效的算法--在线处理法
在线的意思就是指每输入一个数据就进行即时处理。在任何一个地方终止输入,算法都能正确的给出当前的解、
下面是最大子列和问题的在线处理法实现,时间复杂度为O(n)
/*求最大子列和之在线处理法*/
#include<stdio.h>
int main(void)
{
int i,num=0;
/*若scanf()的返回值为scanf正确读入的数据的个数*/
while((scanf("%d",&i))!=0)
{
num+=i;
/*如果加起来的值小于0,那么就会使子列的和减少,因此抛弃*/
if(num<=0)
num=0;
}
printf("%d",num);
return 0;
}