杭电1003

Max  Sum

View Code
 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             

 

posted @ 2012-07-04 17:37  zlyblog  阅读(818)  评论(0编辑  收藏  举报