我想要一种算法(没有特定语言)从一组整数中找到一个子集,使它们的总和在一定范围内。
例如,如果我有一群人,他们的权重如下。
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 问题并运行数千次迭代,即使我需要它运行得非常快。
也许那天我在计算机科学课上睡着了,但是除了蛮力方法之外,我什么都想不出来。
我将其标记为 javascript,仅仅是因为它最接近我的实际实现(而且它更容易阅读)。对其他解决方案持开放态度,只要它们不以某处的某些 Cthulhu 功能为基础。
我知道这是一个奇怪的问题,但这里的任何帮助都将不胜感激。
好吧,我难住了。23 小时内发布赏金,我可以在代码方面理解 - 我的背景肯定不在这个领域,我什至很难辨别用于描述问题的符号,更不用说解决方案了。
有人想帮助我,给我一些可以修改到最终项目的示例 javascript 代码吗?我会尽可能增加 250pt 的赏金......但如果有一个体面的解决方案,我会在时机成熟时分发它。