【发布时间】:2010-01-27 06:05:03
【问题描述】:
给定一个所有元素都是正数的数组,找到一个子序列的最大和,约束条件是序列中没有两个数字在数组中应该是相邻的。所以 3 2 7 10 应该返回 13(3 和 10 的总和)或 3 2 5 10 7 应该返回 15(3、5 和 7 的总和)。
我尝试使用所有可能的允许总和,然后找到最大值(蛮力方法),但有没有更好的方法。例如,对于 [3 2 7 10],我将 3,7 和 2,10 相加并取最大值。
更多示例:
- [3, 2, 7, 1]:返回 10
- [6, 2, 1, 4]:返回 10
- [8, 9, 5, 1]:返回 13
- [29, 77, 16]:返回 77
- [29, 44, 16]:返回 45
【问题讨论】:
-
请考虑奇偶位置有大数但不相邻的情况。我们将如何编写包含这种情况的程序例如 [239 2 3 111 1 4 546 4 3]应该给出 239+111+546+3。