题目链接: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])
时间: 2024-11-07 07:48:23