algorithm - 背包算法变量

标签 algorithm knapsack-problem

我遇到的问题如下:
假设我有一个给定重量的存钱 jar ,我用一组给定的硬币在里面存钱。最后,我知道存钱 jar 的总重量以及我使用的硬币的重量和值(value)。

我想找出我可以保证存入存钱 jar 的最低金额,即最坏的情况。例如,如果:

  • 总重量 = 100
  • 使用的硬币重量 = {1, 50}
  • 硬币的值(value) = {1, 30}

那么我能保证的银行最低值是60。

问题是背包变体,但我找不到正确的重复出现。

提前致谢!

最佳答案

我采用的方法是评估集合中的每一枚硬币,以确定其“值(value)密度”(需要一个更好的术语)——值(value)除以重量。在您的示例中,第一个硬币的值(value)密度为 1,第二个硬币的值(value)密度为 30/50 = 0.6。

然后从总重量为零开始,在不超过给定重量的情况下尽可能使用最低的“值(value)密度”硬币。然后应用下一个“值(value)密度”最低的硬币,依此类推,直到达到给定的重量。

这基本上是一种贪心算法。

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

相关文章:

python - 用 Python 简化的 0/1 背包问题

PHP:在数据库中查找一组总和为特定数字的数字

java - 简而言之,后缀树的 Java 实现和用法?

python - 两种背包尺寸的多维成本0-1背包问题

algorithm - 两个背包的 0-1 背包问题的反例

algorithm - 解决 CodeChef 的练习时遇到问题 [简单]

r - 具有递归函数的 R 中的 KnapSack 动态规划

c++ - 如何用等距水平线填充闭合折线?

c - 哪些数据结构和算法不能用 C 实现?

c# - 从时间列表中获取休息时间