Max Sum

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


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  


Author Ignatius.L  

最大连续和sum....运用动态规划思想

HDUOJ--------1003 Max Sum_HDUOJHDUOJ--------1003 Max Sum_HDUOJ_02

1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
4 int main()
5 {
6 int n,j,i,num,a,ans,maxc,posst,posen,temp;
7 scanf("%d",&n);
8 for(i=1;i<=n;i++)
9 {
10 scanf("%d",&num);
11 maxc=0;
12 posst=posen=1;
13 ans=-0x3f3f3f3f ;
14 temp=0;
15 for(j=1;j<=num;j++)
16 {
17 scanf("%d",&a);
18 maxc+=a;
19 if(ans<maxc)
20 {
21 ans=maxc;
22 posen=j;
23 posst=temp+1;
24 }
25 if(maxc<0)
26 {
27 maxc=0;
28 temp=j;
29 }
30 }
31 printf("Case %d:\n%d %d %d\n",i,ans,posst,posen);
32 if(i!=n) putchar(10);
33 }
34 return 0;
35 }

View Code



编程是一种快乐,享受代码带给我的乐趣!!!