注意只有一个负数时,负数也算最大值。
#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