标签:
http://acm.hdu.edu.cn/showproblem.php?pid=1003
这几天开始刷动归题目,先来一道签到题
然而做的并不轻松,
没有注意到边界问题,
WA了几发才发现
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int donser[100000]; int d[100000]; int main() { int i,j,k,test,n,max=0,num=1,shit; scanf("%d",&test);shit=test; while(test--) { memset(d,0,sizeof(d)); memset(donser,0,sizeof(d)); scanf("%d",&n); for(j=1;j<=n;j++) { scanf("%d",&d[j]); } donser[1]=d[1]; for(i=2;i<=n;i++) { if(donser[i-1]<0) donser[i]=d[i]; else donser[i]=donser[i-1]+d[i]; } max=donser[1]; for(i=2;i<=n;i++) { if(max<donser[i]) { max=donser[i];num=i; } } int nnn=0,hhh=1; for(k=num;k>0;k--) { nnn=nnn+d[k]; if(nnn==max){hhh=k;} } cout<<"Case "<<shit-test<<":"<<endl<<max<<" "<<hhh<<" "<<num<<endl; if(test) cout<<endl; max=0;num=1; } return 0; }
标签:
原文地址:http://www.cnblogs.com/dzzy/p/5261521.html