Max Sum

1 //杭电1003 2 /*2 3 5 6 -1 5 4 -7 4 7 0 6 -1 1 -6 7 -5 5 6 Case 1: 7 14 1 4 8 9 Case 2: 10 7 1 6 11 */ 12 #include<stdio.h> 13 int main() 14 { 15 int t,n,a,i,j,start,end,temp; 16 long max,sum; 17 scanf("%d",&t); 18 for(i=1;i<=t;i++) 19 { 20 sum=0; 21 temp=1; 22 max=-1001;//由于存在全是负数的情况,将最大值赋值为负数 23 scanf("%d",&n); 24 for(j=1;j<=n;j++) 25 { 26 scanf("%d",&a); 27 sum=sum+a; 28 if(sum>max) 29 { 30 max=sum; 31 start=temp;//将起始的下标标记 32 end=j;//标记终止的下标 33 } 34 if(sum<0) 35 { 36 sum=0; 37 temp=j+1; 38 } 39 } 40 printf("Case %d:\n",i); 41 printf("%d %d %d\n",max,start,end); 42 if(i<t) 43 printf("\n"); 44 } 45 return 0; 46 } 47 48 49 50 51 52 53 54