hdu 题目1003 Max Sum (最大连续子序列和)

http://acm.hdu.edu.cn/showproblem.php?pid=1003

 

这个如果全是负数的话;

最大子序列和不是0;

 

#include <stdio.h>

int main()
{
	int n,t,tt,i,tmp,sum,max,tmax,start,end,a0;
	scanf("%d",&t);
	for(tt=1;tt<=t;tt++){
		scanf("%d%d",&n,&a0); 
		max = tmax = a0;
		start = end = tmp =1;
		for(i=2;i<=n;i++){
			scanf("%d",&a0);
			if(tmax + a0 < a0){
				tmax = a0;
				tmp = i;
			}
			else 	tmax += a0;
			if(tmax > max){
				max = tmax;
				start = tmp;
				end = i;
			}
		}
		printf("Case %d:\n%d %d %d\n",tt,max,start,end);
		if (tt<t) printf("\n");
	}
	return 0;
}
/*
5
5 6 -1 5 4 -7
7 0 6 -1 1 -6 7 -5
5 -1 -1 -1 3 -1
5 5 -1 -5 6 -1
5 -1 -1 -1 -2 -2
*/


 

你可能感兴趣的:(hdu 题目1003 Max Sum (最大连续子序列和))