使用给定的总和查找K个元素的子序列

时间:2012-12-23 09:29:48

标签: arrays algorithm language-agnostic

  

可能重复:
  Sum-subset with a fixed subset size

所以我有一个数组A,其元素为A[1], A[2] .. A[N]

我希望找到一个子序列(不一定是连续的),具有恰好K个元素,其总和正好是Sum

我最好的猜测是O(N K ),如果你运行K嵌套循环,并测试每种可能性。

这可以更快地完成吗?

A的所有元素都是整数,大于0。

1 个答案:

答案 0 :(得分:0)

我认为这在政治时期无法解决。 @Anderson是对的,它确实类似于背包问题。

尽管您可以通过branch and bound算法加快速度,但它的效果将取决于您的实际值。 (例如:如果超过总和,则不要进一步测试)

修改 基于这个主题,@ amit链接,O(n ^ k)确实是最佳答案,对于任何固定的k值,它是n中的polinomial。