简单的动态规划题。
代码:
#include<stdio.h>
#define MAX 100001
typedef struct Number
{
int num;
int sum;
int ipos;
}Number;
void main()
{
int n,m,i,j,sum,ipos,result,summax;
Number num[MAX];
while(scanf("%d",&n)!=EOF)
{
for(j=0;j<n;j++)
{
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d",&num[i].num);
num[i].sum=0;
}
sum=0;
ipos=1;
summax=num[0].num;
result=0;
for(i=0;i<m;i++)
{
sum+=num[i].num;
if(sum>=0)
{
num[i].sum=sum;
num[i].ipos=ipos;
}
else
{
num[i].sum=sum;
sum=0;
num[i].ipos=i+1;
ipos=i+1+1;
}
if(summax<num[i].sum)
{
result=i;
summax=num[i].sum;
}
}
printf("Case %d:\n",j+1);
printf("%d %d %d\n",num[result].sum,num[result].ipos,result+1);
if(j<n-1)
printf("\n");
}
}
}