§07 动态规划
动态规划 · 0-1 背包
每件物品只能取一次,容量有限——逐格填充 dp[i][c],高亮「取 / 不取」两种转移来源。
0-1 背包
伪代码
1
// 0-1 背包:dp[i][c] = 前 i 件物品、容量 c 的最大价值
2
for i = 1 to n:
3
for c = 0 to C:
4
if w[i] > c: dp[i][c] = dp[i-1][c] // 放不下
5
else: dp[i][c] = max(dp[i-1][c], // 不取
6
dp[i-1][c-w[i]] + v[i]) // 取
7
end for
8
end for
9
answer = dp[n][C]