HDU1003 Max Sum

解题思路:最大连续和,此题多了记录的下标,具体见代码。

 1 #include<cstdio>
 2 #include<algorithm>
 3 using namespace std;
 4 #define inf 0x3f3f3f3f
 5 int main()
 6 {
 7     int t, n, sum, max1, k, kase = 1, s, e, a;
 8     scanf("%d", &t);
 9     int tmp = t;
10     while(t--)
11     {
12         scanf("%d", &n);
13         s = e = k = 1;
14         sum = 0, max1 = -inf;
15         for(int i = 1; i <= n; i++)
16         {
17             scanf("%d", &a);
18             sum += a;
19             if(sum > max1)
20             {
21                 max1 = sum;
22                 s = k;
23                 e = i;
24             }
25             if(sum < 0)
26             {
27                 sum = 0;
28                 k = i + 1;
29             }
30         }
31         if(t != tmp-1) printf("\n");
32         printf("Case %d:\n", kase ++);
33         printf("%d %d %d\n", max1, s, e);
34     }
35     return 0;
36 }
View Code

 

posted on 2015-11-01 19:41  改写历史,倾尽天下  阅读(134)  评论(0编辑  收藏  举报

导航