[hdoj1003]maxsum
大致题意:
输入一个数列,找到从哪个数到哪个数的和最大,即最大子串(区分于子序列)
输出子串和的最大值已经最大子串开头和结尾的下标,并输出。
!!!我一开始写的时候定义max=-1,忽略了几个数的和可能比-1还小的可能性。。。。。
[cpp]
#include<iostream>
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<n;i++)//我当时写成-1,调了好久,没想到是这么个错误
{
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<t)
cout<<endl;
}
}
补充:软件开发 , C++ ,