背包问题记录
0-1背包
0-1背包即物品只有一个 不可重复拿
通常所求的内容是背包能容纳的物品最大价值 或者是组合数
方法是构建二维dp数组dpij表示对于前j个物品 背包容量为i时所能容纳的最大物品价值 由此推出递推公式
优化:采用一维滚动数组
由于0-1背包问题通常之和前i-1个物品和i个物品之间有联系 因此可以将二维数组压为一维数组
需要注意的是 外层遍历物品 内层遍历背包容量的时候 背包容量的遍历需要倒序进行!!
完全背包
物品数量不受限制 可以取0-无数个
1.组合
背包中物品只要相同 顺序无所谓
先遍历物品 再遍历背包容量
2.排列
背包中物品相同但排列顺序不同也算两种结果