[pythontip]最大非连续子序列

题目链接:http://www.pythontip.com/coding/code_oj_case/36
给你一个整数list L, 如 L=[2,-3,3,50], 求L的一个非连续子序列,使其和最大,输出最大子序列的和。 这里非连续子序列的定义是,子序列中任意相邻的两个数在原序列里都不相邻。 例如,对于L=[2,-3,3,50], 输出52(分析:很明显,该列表最大非连续子序列为[2,50]).


dp首先复制L序列的元素,然后比较前两个元素,确定最优解赋值给dp[1]。
1 # L=[2,-3,3,50]
2 dp = list(L)
3 dp[1] = max(dp[1], dp[0])
4 for i in range(2, len(L)):
5     dp[i] = max(max(dp[i], dp[i-1]), dp[i-2]+L[i])
6 print(dp[len(L)-1])
posted @ 2015-10-01 00:05  Kirai  阅读(873)  评论(0编辑  收藏  举报