ALGORITHM NOTEBOOK / 01
同一件物品,为什么能被放进两次?
一个重量 2、价值 3 的物品,容量为 4。看清读取的是旧值还是本轮新值,就能理解背包的遍历方向。
▧
本轮物品重量 2 / 价值 3
等待读取先预测:容量 4 的最终价值会是 3,还是 6?
这一动作意味着什么
状态定义、可信度与适用边界
dp[c] 是容量不超过 c 时的最大价值。本例从全零数组开始。每次转移为 dp[c] = max(dp[c], dp[c−2]+3)。蓝色是读取位置,铜色是写入位置;“本轮”标记表示这个格子已经使用过本件物品。
0/1 背包最终数组应为 [0,0,3,3,3],完全背包为 [0,0,3,3,6]。这里只解释一维容量遍历方向;恰好装满、计数和二维状态有各自的状态语义。