以下是什么?

时间:2016-10-18 21:45:36

标签: algorithm

我有一个简单的算法问题。

  • 我有一组正整数S和一个正整数i
  • 假设S(或S的子集)的总和是其元素的总和。
  • 我需要找到s的{​​{1}}子集,其总和不超过S并且是“最大求和” - 意味着i的其他子集没有更多总和超过S而不超过s

我提出的一个简单的解决方案是遍历i的每组幂集并对整数求和,用我寻找的属性跟踪集合,但这个算法显然是指数的。 / p>

这个问题必须有一个众所周知的名字,因为我不认为我是第一个遇到这个问题的人。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

使用动态编程解决集合的子集和问题。

然后将填充表从第i个条目扫描到较小的值,直到找到非零条目(即存在这样的总和)。这是不超过给定值的子集的最大总和。