Maximum Subsequence Sum (25)——改进版

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int k,i;
	int *a;
	while(scanf("%d",&k)!=EOF)
	{
		if(k<1||k>10000) continue;
		int sum=0,b=0;
		int f=0,l=k,t=0;
		a=(int *)malloc(k*sizeof(int));
		for(i=0;i<k;i++)
		{
			scanf("%d",&a[i]);
			if(b>0) b+=a[i];
			else
			{
				b=a[i];
				t=i;
			}
			if(b==0&&sum==0) {
				t=i;l=i;
			}
			if(b>sum)
			{
				sum=b;
				l=i;
			}
			if(t<=l&&l!=k) f=t;
		}
		if(l==k) l--;
		printf("%d %d %d\n",sum,a[f],a[l]);
		free(a);
	}
	return 0;
}
之前总是只能部分正确。有一个测试点不能通过。原因就是没有考虑到数组中只有负数和零的情况!
posted on 2015-01-23 22:32  赛亚人  阅读(109)  评论(0编辑  收藏  举报