我需要实施分数背包来解决这个问题
价值($ 20)20 10 90 110 70 60
重量(磅)3 4 1 5 6 3 4
但是我对分数背包的工作方式感到困惑,我理解背包只能起作用。 所以,在我的程序中输入例如重量限制= 7
它给了我143
你能帮我理解分数背包的工作原理吗?
谢谢
答案 0 :(得分:0)
答案 1 :(得分:-1)
第一步是了解分数背包问题是一种贪婪算法,因此可以满足贪婪选择属性。该属性指出,所有最佳解决方案都是第一个选择,在这种情况下,项目k 具有 max weight(k)/ value(k)< / strong>将始终采用它,并尽可能多地使用它。了解了这一概念后,我们便可以继续使用该算法。
首先使用权重(i)/值(i)对背包中的所有物品进行排序。
然后对从i = 1到n的排序列表中的每个物品进行排序。
从项目(i)中获取尽可能多的东西,直到填满为止。
请注意,这不适用于0/1背包问题。