浅谈背包问题
01背包
01背包题目
采用一维优化
1 |
|
完全背包
1 |
|
多重背包
1 |
|
解释
- 三种背包问题我用的都是一维优化
- 大家有没有发现,01背包和完全背包的唯一区别就是j(空间)一个是从头开始循环,而另外一个则是恰恰相反,其实道理很简单:01背包考虑每个物品只用一次,它实际上转移方程是和i未选上之前的此时j进行比较,所以我们从后往前循环,(因为j-space[i]的值肯定比我们的j小,所以保证i只用一次),而完全背包相反,我们从头开始循环,因为i物品可以反复使用,所以j-space[i]在j的循环范围内,如果满足条件还可以继续使用
- 多重背包可以转化为01背包问题(将第i个物品作为n个相同物品计入物品总数中)
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment