【发布时间】:2013-06-18 02:51:04
【问题描述】:
我有一个 N 个正整数的集合,每个正整数都以一个(相对较小的)常数 C 为界。我想找到这些数字的一个子集,其中最小的总和大于(或等于)一个值 K。
涉及的数字不是很大(
[编辑]:数字未排序,可能有重复。
但是,我对算法的理解不够好,无法自己执行此操作。事实上,我什至不确定它所基于的假设是否仍然成立......
-是否可以根据我的需要调整此算法?
-或者我可以使用另一种同样有效的线性算法吗?
-谁能提供伪代码或详细解释?
谢谢。
链接到我正在调查的子集和代码: Fast solution to Subset sum algorithm by Pisinger
(如果措辞/格式不正确/等,我深表歉意。我还是 StackOverflow 的新手...)
【问题讨论】:
-
这不是背包问题的变种吗?
-
是的。具体来说,是 Subset-Sum 的一种变体(它本身就是一个特殊的背包)。
-
为了将来参考,如果有重复,请尽量避免使用术语“set”。 “收藏”是一个更好的词。
标签: c++ algorithm subset-sum