第一次AC了一道有点难度的题
好好写一回解题报告
Max Sequence
Time Limit: 3000MS | Memory Limit: 65536K | |
Total Submissions: 8026 | Accepted: 3230 |
Description
Give you N integers a1, a2 ... aN (|ai| <=1000, 1 <= i <= N).
You should output S.

You should output S.
Input
The input will consist of several test cases. For each test case, one integer N (2 <= N <= 100000) is given in the first line. Second line contains N integers. The input is terminated by a single line with N = 0.
Output
For each test of the input, print a line containing S.
Sample Input
5 -5 9 -5 11 20 0
Sample Output
40
Source
POJ Monthly--2005.08.28,Li Haoyuan
此题要求一个已知整数序列中两个子序列和的最大值
和2479如出一辙 数据量有所变化 因此要在堆上用new来分配数组了
研究了两天的DP,翻来覆去终于有了点头绪。
所谓DP,只是一种思想,不要去找所谓的万能公式。
一个大问题的最优解,如果可以用小问题的最优解通过一个条件式表达出来(DP公式),就可以用DP的思想进行解决。
具体怎么说呢,还是多做些题体会吧。
代码:
关于这道题中的求最大和子序列的问题
今天又看了另一位的代码 觉得他的代码能非常好地体现解题思想,遂转来
就和我以前说的一样(在哪说的忘记了)。。
用b来记录一定要将子序列延续到当前位置(也就是序列头浮动,序列尾固定),也就是一定要将序列继续下去的话,当前位置和其之前的序列一共可以给最大和贡献多少。
而我认为 dp也是体现在这里的。这才是dp函数。