上一个版本的0-1背包代码的复杂度:时间复杂度O(n*C)空间复杂度O(n*C)
优化思路如下:
0-1背包问题:
F(n,C)考虑将n个物品放入背包为C 的背包,使得价值最大。
状态转移方程:F(i,c) = max(F(i-1 , c) , v(i)+ F(i-1, c- w(i) )
根据状态转移方程,第i行元素计算只依赖与i-1行元素。理论上我们只需要保持两行元素。
如上图,我们初始化后第一行存放0行元素,第二行存放1行元素。而第二行元素可以之间使用不再使用的0行元素。
发现规律:第一行一直为偶数行,第二行一直为奇数行,所以我们可以使用一个行数为2的二维数组来储存。