STATE · TRANSITION · MEMOIZATION
问题的最优解包含子问题的最优解。全局最优可由局部最优递推得到。
递归时同一子问题被重复计算。用表格(或记忆化)保存结果,避免重复。
未来决策只依赖当前状态,与如何到达当前状态无关。
n 件物品,每件有重量 w 和价值 v,背包容量 W。每件物品最多选一次。求最大价值。
dp[i][w] = 前 i 件物品、容量 w 下的最大价值 dp[i][w] = max(dp[i-1][w], dp[i-1][w-wt[i-1]]+val[i-1]) // 不选 or 选 边界: dp[0][*]=0, dp[*][0]=0