注意只有一个负数时,负数也算最大值。
#include<iostream>
using namespace std;
int main()
{
int a[100001];
int T,T2=0,n,i;
int sum,maxsum,start,maxstart,maxend;
cin>>T;
while(T--)
{
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
maxstart=maxend=sum=0;
maxsum=-500000000;
start=0;
for(i=0;i<n;i++)
{
sum+=a[i];
if(sum<a[i])
{
sum=a[i];
start=i;
}
if(sum>maxsum)
{
maxsum=sum;
maxstart=start;
maxend=i;
}
}
cout<<"Case "<<++T2<<":\n"<<maxsum<<" "<<maxstart+1<<" "<<maxend+1<<endl;
if(T!=0) cout<<endl;
}
return 0;
}
原文地址:http://blog.csdn.net/a809146548/article/details/44201269