输入:
1 -1 2 2 3 -3 4 -4 5 -5
思路:
这是一个动态规划的问题,满足DP的两个条件:重叠子问题和最优子结构。
采用自底向上的设计策略,先从左至右计算出每个段的最大子序列和a[i],再反过来,从右至左计算每个段的最大子序列和b[i],最后遍历每个段,求出a[i]+b[i]的最大值,即为最后所求值。
代码:
结果:
最开始的算法用了O(N^2)的时间复杂度,导致Time Limit Exceeded;后来改进了,时间复杂度降为O(N),但提交到POJ出现了Wrong Answer。不知何故,以待研究。
借鉴一下别人的Accepted的代码:
http://fghtech.blogbus.com/logs/62555535.html
在此对博主表示感谢。