1.01背包问题
空间优化:
这里解释一下j的取值必须要从capacity到0。
在第i=x-1轮循环中已经确定了dp的所有值,现在进行第i=x轮循环时,需要取上一轮循环确定的dp数组的值来确定本轮循环的dp值。
类似于
类似于
这里还需要解释一下
而不是
这是因为在进行第i=x轮的时候,dp[j]此轮没有已经被赋值,所以依然使用的是上一轮i=x-1时候的dp[j]了。
2.完全背包问题
空间优化:
这里一句01背包中的解释可以很容易得出这个结论。
3.多重背包问题
思路一:
空间优化:
思路二:把多件相同物品看作单独的一件件物品,这可以使用01背包问题进行求解,在此不在赘述。