上篇博客中存在一点问题,上篇链接
准确的说是oj存爱缺陷吧。具体为:
eg: 如输入为:5 0 0 0 0 0;
输出为:0 1 5
但是上篇代码已A;正确的输出应为: 0 1 1
题目中已说If there are more than one result, output the first one.
这题可用dp解决,代码为:
#include <stdio.h>
int main()
{
int i,j,x,n,m,sum,max;
int start,end,nowstart;
scanf("%d",&n);
{
for (i=1;i<=n;i++)
{
scanf("%d%d",&m,&x);
sum=max=x;
start=end=nowstart=1;
for (j=2;j<=m;j++)
{
scanf("%d",&x);
if (sum+x<x)
{
sum=x;
nowstart=j;
}
else
{
sum+=x;
//end=j;
/**If there are more than one result,
output the first one.!!!!!!!!**/
}
if (sum>max)
{
max=sum;
start=nowstart;
end=j;
}
}
printf("Case %d:\n",i);
printf("%d %d %d\n",max,start,end);
if (i!=n)
{
printf("\n");
}
}
}
return 0;
}