返回全部文章

为什么很多动态规划题其实是在处理“选择”

很多人把动态规划理解成“列公式”,但我更愿意把它理解成:

很多人把动态规划理解成“列公式”,但我更愿意把它理解成:

在有限状态下,对选择结果进行比较。

动态规划里真正发生了什么

大多数动态规划题都在回答类似问题:

  • 当前位置选还是不选
  • 当前资源分给哪个阶段
  • 当前路径往哪边延伸更优

换句话说,动态规划并不是在机械地填表,而是在比较不同选择的后果。

为什么理解“选择”很重要

因为一旦你只记转移式,就会忽略:

  • 这些项分别代表什么选择
  • 为什么只有这些选择
  • 为什么它们已经覆盖了所有情况

真正理解选择之后,转移方程才不是死记硬背。

一个典型误区

很多人看到公式:

dp[i] = max(a, b)

会停在“哦,这里取最大值”。

但更关键的问题应该是:

  • a 代表什么选择
  • b 代表什么选择
  • 为什么不会有第三种情况

结论

动态规划的核心不是“写出表格”,而是:

看清每一步到底在比较哪些选择。

只要这个层面想明白,很多 DP 题都会更顺。