完全 背包问题
完全背包
有N种物品和一个容量为T的背包,每种物品都就可以选择任意多个,第i种物品的价值为P[i],体积为V[i],求解:选哪些物品放入背包,可卡因使得这些物品的价值最大,并且体积总和不超过背包容量。
跟01背包一样,完全背包也是一个很经典的动态规划问题,不同的地方在于01背包问题中,每件物品最多选择一件,而在完全背包问题中,只要背包装得下,每件物品可以选择任意多件。从每件物品的角度来说,与之相关的策略已经不再是选或者不选了,而是有取0件、取1件、取2件…直到取⌊T/Vi⌋(向下取整)件。
分析
贪心?
根据性价比排序,性价比从高到底取。
结论:不可行
反例:如果一个背包的容量为10,有三件物品可供选择,分别是
| 物品 | 价值 | 体积 |
|---|---|---|
| A | 5 | 5 |
| B | 8 | 7 |
| 按照性价比,必然取一个B。但是取两个A明显收益更高。因此贪心不可行。 |
解决
分治
和之前相似,直接递归即可
| |
动态规划
递归
| |
迭代
| |
空间优化
| |
原文作者:弗兰克的猫
原文链接:https://www.cnblogs.com/mfrank/p/10533701.html