我需要实现分数背包来解决这个问题
价值($)20 50 10 90 110 70 60
重量(磅)3 4 1 5 6 3 4
但我对分数背包的工作方式感到困惑,我理解背包只能起作用。所以,在我的程序中输入例如重量限制= 7
它给了我143
你能帮我理解分数背包的工作原理吗?
谢谢
第一步是要了解分数背包问题是一种贪婪的算法,因此满足了贪婪的选择属性。该属性指出第一选择将在所有最优解中,在这种情况下,将始终采用具有最大权重(k)/值(k)的项k并尽可能多地采用。在理解了这个概念后,我们可以继续使用该算法。
First Sort all the items in the backpack using weight(i)/value(i).
Then for each item in the sorted list from i=1 to n.
Take as much possible from item(i) until filled.
请注意,这不适用于0/1背包问题。