gpt4 book ai didi

algorithm - 背包问题的变体

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:03:00 25 4
gpt4 key购买 nike

我有“n”个金额(非负整数)。我的要求是确定一组最佳数量,以便组合的总和小于或等于给定的固定限制并且总数尽可能大。最优集中可以包含的数量没有限制。

例如:金额为 143,2054,546,3564,1402,给定限制为 5000。

根据我的理解,背包问题对每件元素都有 2 个属性(重量和值(value))。但上述问题只有一个属性(数量)。我希望这会让事情变得更简单? :)

有人可以帮我解决这个问题的算法或源代码吗?

最佳答案

这仍然是一个 NP-hard 问题,但如果你想(或必须)做类似的事情,也许这个主题可以帮助你一点:

find two or more numbers from a list of numbers that add up towards a given amount

我在哪里solved it like thisNikiC修改了 to be faster .唯一的区别是:那个是关于获得确切的数量,而不是“尽可能接近”,但这只是代码中的一些小变化(你必须将它翻译成你正在使用的语言)。

看看我的代码中的注释,以了解我正在尝试做的事情,简而言之:

  • 计算给定部分的所有可能组合并求和
  • 如果结果是我要找的数量,就把解保存到一个数组
  • 至少,对所有可能的解决方案进行排序,得到使用最少部分的解决方案

所以你必须改变:

  • 如果解决方案低于您要查找的数量,请保存该解决方案
  • 按总量而不是用过的零件数对解决方案进行排序

关于algorithm - 背包问题的变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7346223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com