#include<stdio.h> int main() { int i,j,aa,b,p,max,sum,a[110000],n; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[0]); for(j=1;j<=a[0];j++) scanf("%d",&a[j]); sum=0,max=a[1]; aa=b=p=1; for(j=1;j<=a[0];j++) { if(sum<0) {//一旦为0,从新开始加法 sum=a[j]; p=j; } else sum+=a[j]; if(sum>max) {//如果加上一个负数后,sum任然大于0,但是sum值变小了,所以,max就可以保存未加负数前的sum,即能保证有最大值被记录下来了 max=sum; aa=p; b=j; } } if(i!=n) printf("Case %d:\n%d %d %d\n\n",i,max,aa,b); else printf("Case %d:\n%d %d %d\n",i,max,aa,b); } return 0; }
hdu1003最大和序列
最新推荐文章于 2021-05-25 01:49:32 发布