algorithm - 找到满足特定条件的最大集合数

标签 algorithm

给定一组数字:

156, 434, 600

如何找到超过 500 的最大组数?它允许您甚至只包含一个元素来创建一个组。但不允许在组间重复使用一个元素。所以,在上面的例子中,答案是:

2 // {156, 434}, {600}

我希望当我得到另一组具有不同大小的数字时,我希望制定一个通用算法可以应用它。

  • 156、434、600
  • 642、324、174、100、452
  • 174、100、455、900、1200、341

但我不知道应该从哪里开始。所以,请帮我想出一个好主意。

最佳答案

一种方法可能是对最佳解决方案的 bin 数量进行二分搜索,每次对多子集求和问题(例如 https://www.researchgate.net/publication/262408639_The_Multiple_Subset_Sum_Problem 1)使用多项式时间近似方案。

<子>1。多子集和问题; Alberto Caprara、Hans Kellerer 和 Ulrich Pferschy; SIAM 优化杂志 卷。 11:问题。 2:页面。 308-319 (发行日期:2000年)

关于algorithm - 找到满足特定条件的最大集合数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48021805/

相关文章:

python - 寻找最大的重复子串

algorithm - 如何根据发音计算英语单词之间的相似度得分?

java - hashmap 如何提供恒定时间性能?

algorithm - 赛程算法,每支球队打特定场次的比赛

c++ - 带轮分解的埃拉托色尼筛法

algorithm - 在 (x,y) 点的集合上生成图形

algorithm - 开放寻址中的双重散列,什么散列函数和表长

algorithm - 在一组人中查找 "Star"的算法的时间复杂度

ios - 从 objective-c 中的 nsstring 获取最后一个空格

algorithm - Quicksort 是否存在潜在的安全风险?