01背包为何压缩后要逆序
如下图所示 为01背包压缩的模式
for (int i = 1; i <= n; i++)
for (int j = V; j >= 0; j--)
f[j] = max(f[j], f[j - w[i]] + v[i]);
这里用别的博客的一张图的例子,图中是二维的情况,比较简单不做赘述
我这边手绘了一个表格来表示1维的情况
完全背包
for (int i = 1; i <= n; i++)
for (int j = w[i]; j <= V; j++)
f[j] = max(f[j], f[j - w[i]] + v[i]);
和01背包只有for循环次序不同
从上图中也可以顺序的情况下,看到 f(4)可以等于f[2]+3=6