【发布时间】:2020-05-12 13:40:02
【问题描述】:
给定一个大小为 n 的 非递减数组 A 和一个整数 k,如何找到一个子序列S 数组 A 及其元素的 最大 可能总和,因此该总和最多为 k。如果有多个这样的子序列,我们只想找到一个。
例如,设数组为 {1, 2, 2, 4} 所以,n = 4,设 k = 7。那么,答案应该是 {1, 2, 4}。
蛮力方法大约需要 O(n(2^n-1)),但是有没有更有效的解决方案来解决这个问题?
【问题讨论】:
-
所有元素都是正数吗?
-
@Damien 是的,元素大于零。
-
@Saibot 提供的 Wiipedia 链接给出了一个简单动态规划算法的示例。第一步,您可以尝试实现它并检查它是否足够快
-
好的,谢谢
标签: c++ arrays algorithm dynamic-programming