从一组数字中创建1000,2000等的总和

时间:2009-12-19 00:07:21

标签: algorithm

好的,这就是问题所在:

我需要从50-100项目集中找到任意数量的intem组,加起来为1000,2000,...,10000。

输入:整数列表

整数只能在一个列表中。

关于算法的任何想法?

3 个答案:

答案 0 :(得分:5)

谷歌搜索“背包问题”应该会得到很多点击(虽然它们不太可能非常令人鼓舞 - 这是一个众所周知的NP完全问题)。

编辑:如果你想获得技术,你所描述的似乎真的是子集和问题 - 这是背包问题的一个特例。当然,这是假设我正确理解你的描述,我承认可能会对某些问题持开放态度。

您可能会在The Handbook of Applied Cryptography帮助中找到算法3.94。

答案 1 :(得分:2)

我不是100%根据你的要求,但我之前使用过回溯搜索这样的东西。这是一种蛮力算法,它是最慢的解决方案,但它可以工作。 Backtracking Search上的wiki文章可能会对您有所帮助。基本上,您可以使用递归算法来检查每个可能的组合。

答案 2 :(得分:1)

这是背包问题。您可以选择的整数是否有任何限制?他们可以分开吗?它们都低于某个给定值吗?在这种约束条件下,可能有多种方法可以在多项式时间内解决问题 - 谷歌将为您提供答案。