hdu 1003
这个是暴力枚举求解的
//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; } }