Skip to content
困难

一句话答案

DP 四步:定义状态→写转移方程→确定初始值→确定遍历顺序,核心条件:最优子结构+重叠子问题。

核心要点

经典模型:

模型例题转移
线性DP最长递增子序列dp[i]=max(dp[j]+1)
背包0-1背包dp[i][w]=max(不选,选)
区间DP戳气球dp[i][j]=max(dp[i][k]+dp[k][j])

空间优化: 二维→一维滚动数组

追问与易错

追问方向:

  • DP 和贪心的区别?
  • 怎么判断一个题能用 DP?
  • 空间优化的思路?

易错点:

  • ❌ DP 能解决所有优化问题——需要最优子结构+重叠子问题
  • ❌ 二维 DP 都能优化为一维——取决于依赖关系

💡 记忆锚点

DP四步走口诀"状态转移初始序":先定义dp[i]表示什么(状态),再找dp[i]和前面的关系(转移方程),确定起点值(初始化),最后决定填表方向(遍历顺序)。DP和贪心的区别:DP回头看所有子问题取最优,贪心只看眼前最优不回头。能用DP的前提:大问题的最优解包含子问题的最优解(最优子结构)+子问题反复出现(重叠子问题)。