问题描述:
有一系列价值不同,容积不同的物品。从中选出若干件物品,将其装入一个容量有限的背包中,要求1:选择物品的总容量不能大于背包的容量,要求2:在满足要求1的条件下,必须从上述物品中选出价值最大的一批物品将其装入背包。
对于背包问题的子问题最优解可描述为:对于第i件物品是否将其放入背包中
状态转移方程是:f[v]=max{f[v],f[v-c]+w}
解释一下,若只考虑第i件物品的策略(放或不放),那么就可以转化为一个只牵扯前i-1件物品的问题。如果不放第i件物品,那么问题就转化为“前i-1件物品放入容量为v的背包中”;如果放第i件物品,那么问题就转化为“前i-1件物品放入剩下的容量为v-c的背包中”,此时能获得的最大价值就是f [v-c]再加上通过放入第i件物品获得的价值w。