Page 32Dynamic Programming

32 — 0/1 Knapsack (DP)

DP table fill and backtracking chosen items.

0/1 Knapsack DP

Decision

For each item, choose: do not take it, or take it if weight allows.

dp[i][c] = dp[i-1][c] // exclude item i if weight[i] <= c: dp[i][c] = max(dp[i][c], value[i] + dp[i-1][c-weight[i]]) Backtrack: if dp[i][c] != dp[i-1][c], item i was chosen.