Skip to content
2026-09-29 04:20300 字算法算法思想

动态规划 ​

将复杂问题分解为重叠子问题,通过存储中间结果避免重复计算,自底向上求解。

核心特征 ​

  1. 最优子结构:最优解包含子问题最优解
  2. 重叠子问题:不同路径遇到相同子问题(区别于分治)
  3. 无后效性:决策仅依赖当前状态

解题步骤 ​

  1. 定义状态:确定 dp 数组的含义和维度
  2. 建立状态转移方程:写出递推关系
  3. 确定边界:初始化基础情况
  4. 确定遍历顺序:保证计算当前状态时所需子状态已算出

经典问题 ​

类型问题
线性 DP爬楼梯、打家劫舍
背包 DP0-1 背包、完全背包
区间 DP最长回文子串、矩阵链乘法
树形 DP二叉树最大路径和
状态压缩 DP旅行商问题(TSP)

空间优化 ​

观察转移方程仅依赖有限个前序状态时,可用滚动变量将 空间降为 。

每一篇文章,都是时间的标本