我希望能够得到一个算法(不限定语言),以便从一组整数中找出一个子集,使得它们的总和在特定范围内。
例如,如果我有一组人,他们的体重如下。
var people:{
jane:126,
julia:112,
charles:98,
john:182,
bob:213,
edgar: 237,
jay: 223,
dan: 191,
alex: 210,
david: 196
}
现在我想从这些人中找到一个子集,他们的总重量在818-822磅之间(如果你试图算一下...别管它了,这些数字是我凭感觉说的,而且我不知道这个数据集是否有解)。 组中的人数并不重要,只需要从更大的集合中选择一个组。 实际上,任何一个组都可以(尽管随机更好一些)。请注意,这只是一个快速的示例......实际上会有数百人,并且可能没有任何组合符合这个标准。因为实际的数字要比这个大得多,所以我担心会出现n^n问题和数千次迭代,尽管我需要它运行非常快。
也许在计算机科学课上我睡着了,但我除了蛮力方法以外就没想到别的了。
我将此标记为javascript,仅仅是因为它最接近我的实际实现(而且阅读起来更容易)。 开放其他解决方案,只要它们不是基于某个Cthulhu函数的。
我知道这是一个奇怪的问题,但任何帮助都将不胜感激。
好吧,我被卡住了。我要花23个小时发布一份赏金,寻求一个我可以理解代码的东西--我的背景当然不是在这个领域,我甚至很难辨别用于描述问题的符号,更不用说解决方案了。
有人可以帮我并提供一些示例JavaScript代码,我可以将其修改为最终项目吗? 当我能够添加250pt赏金时,我会发布的......但如果有一个像样的解决方案出现,我会在适当的时候发布赏金。