Max sum
Time Limit: 2000/1000 MS (Java/others) memory limit: 65536/32768 K (Java/Others)
Total submission (s): 5271 accepted submission (s): 958
Problem descriptiongiven 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.
Inputthe 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 ).
Outputfor 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
25 6 -1 5 4 -77 0 6 -1 1 -6 7 -5
Sample output
Case 1:14 1 4Case 2:7 1 6
Authorignatius. L
# Include <iostream>
Using namespace STD;
Int main ()
...{
Int t, n, num, start, end;
Cin> T;
For (int K = 0; k <T; k ++)
...{
Cin> N;
Int max =-1001, sum = 0, temp = 1;
For (INT I = 0; I <n; I ++)
...{
Cin> num;
Sum + = num;
If (sum> MAX)
...{
Max = sum;
Start = temp;
End = I + 1;
}
If (sum <0)
...{
Sum = 0;
Temp = I + 2;
}
}
Cout <"case" <k + 1 <":" <Endl <max <"<start <" "<End <Endl;
If (K! = T-1) cout <Endl;
}
}
For code analysis, see linear algorithms for maximum subsequences and
Down the code
Http://dl2.csdn.net/down4/20070726/26155623942.cpp