一、01背包
1.问题特点:有n种物品,每个物品只有一件(有对应的重量和价值),放入一个限容的背包,求最大价值
2.解题思想(先枚举物品,再逆序枚举容量):
利用动态规划的思路,阶“物品的件数”,状态就是“背包剩下的容量”,那么很显然f [ i , v ] 就设为从前 i 件物品中选择放入容量为 v 的背包最大的价值。那么状态转移方程为:
f[i][v]=max{ f[i-1][v],f[i-1][v-w[i]]+val[i] }
(只考虑子问题“将前 i 个物品放入容量为 v 的背包中的最大价值”那么考虑如果不放入 i ,最大价值就和 i 无关,就是 f[ i - 1 ][ v ] , 如果放入第 i 个物品,价值就是 f[ i - 1][ v - w[i] ] + val[ i ]),然后取最大值
3.伪码:
for i = 1..N
for v