[hdoj1003]maxsum

2014-11-24 10:18:10 · 作者: · 浏览: 0

大致题意:

输入一个数列,找到从哪个数到哪个数的和最大,即最大子串(区分于子序列)

输出子串和的最大值已经最大子串开头和结尾的下标,并输出。

!!!我一开始写的时候定义max=-1,忽略了几个数的和可能比-1还小的可能性。。。。。

[cpp]
#include
using namespace std;
int a[100000]={0};

void main()
{
int t,n;
int max=0;
cin>>t;
for(int j=1;j<=t;j++)
{

cin>>n;
int sum=0,temp=0,b=0,e=0;
for(int max=-10000,i=0;i {
cin>>a[i];
if(sum>=0)
{
sum+=a[i];
}
else
{
sum=a[i];
temp=i;
}
if(sum>max)
{
max=sum;
b=temp;
e=i;
}
}
printf("Case %d:\n",j);
printf("%d %d %d\n",max,b+1,e+1);
if(j cout< }
}