题意:
先给出测试用例的次数T(1<=T<=20),现输入一个正整数N(1<=N<=100000),接着是N个数a( -1000 <=a<=1000)。对于每一行先输出Case #:换行输出整数序列输出最大连续子序列的和以及开始和结束的下标。
示例输入:
2
5 6 -1 5 4 -7
7 0 6 -1 1 -6 7 -5
示例输出:
Case 1:
14 1 4
Case 2:
7 1 6
解决方案:
注意输出的格式,最后一个Case没有换行,基本与1231题(点击打开链接)一样。
#include"stdio.h"
main()
{
int max,start,temp,end,sum,i,j,t,n,a[100001];
scanf("%d",&t);
for(j=1;j<=t;j++)
{
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",a+i);
max=a[1];
sum=0;
temp=start=end=1;
for(i=1;i<=n;i++)
{
sum+=a[i];
if(sum>max)
{
max=sum;
start=temp;
end=i;
}
if(sum<0)
{
sum=0;
temp=i+1;
}
}
printf("Case %d:\n",j);
printf("%d %d %d\n",max,start,end);
if(j<t) putchar(10);
}
}
使用贪心写一个,结果一样,但提交失败,可能哪里有逻辑错误,请指出。