HDU 1003 Max Sum (最大连续子序和)

Max Sum

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 156637    Accepted Submission(s): 36628


Problem Description
Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 + (-1) + 5 + 4 = 14.
 

 

Input
The first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines follow, each line starts with a number N(1<=N<=100000), then N integers followed(all the integers are between -1000 and 1000).
 

 

Output
For each test case, you should output two lines. The first line is "Case #:", # means the number of the test case. The second line contains three integers, the Max Sum in the sequence, the start position of the sub-sequence, the end position of the sub-sequence. If there are more than one result, output the first one. Output a blank line between two cases.
 

 

Sample Input
2
5 6 -1 5 4 -7
7 0 6 -1 1 -6 7 -5
 

 

Sample Output
Case 1:
14 1 4
Case 2:
7 1 6
 分析:这题是求最大的连续的子序列的和,输出最大连续子序和、起始下标、终止下标。与HDU的1231很类似。
 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<string.h>
 5 using namespace std;
 6 const int MAX = 10010;
 7 int dp[MAX],a;
 8 int main()
 9 {
10     int T,i,j,n,left,right,maxn,flag,num;
11     scanf("%d",&T);
12     for(j=1;j<=T;j++)
13     {
14         scanf("%d",&n);
15         maxn=-9999;
16         num=0;
17         left=right=flag=1;
18         for(i=1;i<=n;i++)
19         {
20             scanf("%d",&a);
21             num+=a;
22             if(num>maxn)
23             {
24                 maxn=num;
25                 left=flag;
26                 right=i;
27             }
28             if(num<0)
29             {
30                 num=0;
31                 flag=i+1;
32             }
33         }
34         if(j!=1) printf("\n");
35         printf("Case %d:\n",j);
36         printf("%d %d %d\n",maxn,left,right);
37     }
38     return 0;
39 }

 

posted on 2015-01-19 17:17  TopCoder  阅读(120)  评论(0编辑  收藏  举报

导航