题目描述
解题思路
#include<iostream>
using namespace std;
int a[100005];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int m;
cin>>m;
//int a[m];
for(int j=0;j<m;j++)
{
cin>>a[j];
}
int sum=0;
int max=a[0];
int pp=1;
int left=1,right=1;
for(int j=0;j<m;j++)
{
sum+=a[j];
//cout<<sum<<endl;
if(sum>max)
{
max=sum;
left=pp;
right=j+1;
}
if(sum<0)//在sum<0的时候才换左边坐标 同时意味着换新的数列
//只要sum!<0 前面的数列总能使后面计算时增大 即对最大值起作用
{
sum=0;
pp=j+2;
}
}
cout<<"Case "<<i+1<<":"<<endl;
cout<<max<<' '<<left<<' '<<right<<endl;
if(i!=n-1)
cout<<endl;
}
return 0;
}