【发布时间】:2011-04-14 21:25:06
【问题描述】:
鉴于
一组数字n[1], n[2], n[3], .... n[x]
还有一个数字M
我想找到最好的组合
n[a] + n[b] + n[c] + ... + n[?] >= M
该组合应达到达到或超过 M 所需的最小值,没有其他组合可以提供更好的结果。
将在 PHP 中执行此操作,因此可以使用 PHP 库。如果没有,只需一个通用算法即可。谢谢!
【问题讨论】:
-
我能想到的最好例子就是这样平衡。如果有超过 1 个组合产生相同的总价值,我也会选择产品数量最少的组合。
-
最少要选择的产品数量是 sum{ n[?] + n[c] + ... } where sum > M. 我错了吗?
-
它的总和 >= M,优先到总和和 M 之间差异最小的集合。如果两个集合的总和相同,则“产品”数量最少的集合获胜