/*
HDU 1003
*/
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int c=1,b,a,sum,n,i,j,k,maxs,l;
scanf("%d",&k);
while(k--)
{
maxs=-9999;
sum=0;
j=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a);
sum=sum+a; //sum记录总和
j++; //用来计数所用数字个数
if(sum>maxs)
{
b=j; //b此时最大值时所用数字个数
maxs=sum; //maxs记录和的最大值
l=i; //l记录最后一个数字的位置
}
if(sum<0)//若和为负数从下一个数开始计数
{
sum=0; //之前的和置零
j=0; //记录个数置零
}
}
printf("Case %d:\n%d %d %d\n",c++,maxs,l-b+1,l); //l-b+1表示第一个数字的位置
if(k)
printf("\n");
}
return 0;
}
Max Sum(动态规划)
最新推荐文章于 2021-02-25 23:35:01 发布