这个是暴力枚举求解的
//hdu1003 这一题的代码我也不愿意整理了,乱就乱吧
这一道题已经写了至少五遍了,也没什么好说的了,核心代码就是第二个for那里
自己在纸上写写就清楚了,后面一个for找最大,然后依据这个最大的
可以推出是从哪里开始的,根据就是每次往回加一个
然后判断和是否等于最大的,在纸上写写就清楚了。。。。
#include <iostream>
#include <stdio.h>
using namespace std;
int a[100010],b[100010];
int main()
{
int t,n,i,k=1;
cin>>t;
while(t--)
{
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
b[1]=a[1];
for(i=2;i<=n;i++)
if(b[i-1]<0) b[i]=a[i];
else b[i]=a[i]+b[i-1];
int Max=b[1],r=1;
for(i=1;i<=n;i++)
if(b[i]>Max) {Max=b[i]; r=i;}
int l=r,s=0;
for(i=r;i>=1;i--)
{
s+=a[i];
if(s==Max) l=i;
}
cout<<"Case "<<k++<<":\n"<<Max<<" "<<l<<" "<<r<<endl;
if(t) cout<<endl;
}
}