题目链接:https://vjudge.net/contest/126708#problem/J
题意:求一段子的连续最大和,只要每个数都大于0 那么就会一直增加,所以只要和0 比较就行,如果加上一数小于0了那么肯定要重新开始找,否则就不断更新最大值就行
AC代码:
#include<stdio.h>
#include<string.h>
int dp[];
int main()
{
int t,a,i,max,n,sum,start,ends,f;
scanf("%d",&t);
for(int t1 = ; t1 <= t;t1++)
{ scanf("%d",&n);
max =-;start = ;ends = ;f = ;sum = ;
for(i = ; i < n ; i ++)
{
scanf("%d",&a);
sum += a;
if(sum > max) {max = sum;ends = i+;start = f;}
if(sum<) {sum = ; f = i+;}
}
printf("Case %d:\n",t1);
printf("%d %d %d\n",max,start,ends);
if(t1 != t) printf("\n");
}
return ;
}