代码之家  ›  专栏  ›  技术社区  ›  Migol

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

  •  1
  • Migol  · 技术社区  · 16 年前

    好吧,问题是:

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

    输入:整数列表

    整数只能在一个列表中。

    对算法有什么想法吗?

    3 回复  |  直到 16 年前
        1
  •  5
  •   Jerry Coffin    16 年前

    谷歌搜索“背包问题”会让你得到很多点击(尽管他们不太可能是非常令人鼓舞的——这是一个相当有名的NP完全问题)。

    编辑:如果你想得到技术性的,你所描述的似乎真的是子集和问题——这是背包问题的一个特例。当然,这是假设我正确理解你的描述,我承认这可能会引起一些问题。

    您可以在中找到算法3.94 The Handbook of Applied Cryptography 乐于助人。

        2
  •  2
  •   Mongoose    16 年前

    我对你的要求不是百分之百的,但我以前用过回溯搜索来查找类似的东西。这是一个蛮力算法,是最慢的解决方案,但它会起作用。维基上的文章 Backtracking Search 也许会帮助你。基本上,您可以使用递归算法来检查每个可能的组合。

        3
  •  1
  •   Håvard S    16 年前

    这是背包问题。你能从中选择整数有什么限制吗?它们是可分割的吗?它们都小于某个给定值吗?考虑到这些限制,可能有办法在多项式时间内解决这个问题——谷歌会为你提供答案。