为什么很多动态规划题其实是在处理“选择”
很多人把动态规划理解成“列公式”,但我更愿意把它理解成:
很多人把动态规划理解成“列公式”,但我更愿意把它理解成:
在有限状态下,对选择结果进行比较。
动态规划里真正发生了什么
大多数动态规划题都在回答类似问题:
- 当前位置选还是不选
- 当前资源分给哪个阶段
- 当前路径往哪边延伸更优
换句话说,动态规划并不是在机械地填表,而是在比较不同选择的后果。
为什么理解“选择”很重要
因为一旦你只记转移式,就会忽略:
- 这些项分别代表什么选择
- 为什么只有这些选择
- 为什么它们已经覆盖了所有情况
真正理解选择之后,转移方程才不是死记硬背。
一个典型误区
很多人看到公式:
dp[i] = max(a, b)
会停在“哦,这里取最大值”。
但更关键的问题应该是:
a代表什么选择b代表什么选择- 为什么不会有第三种情况
结论
动态规划的核心不是“写出表格”,而是:
看清每一步到底在比较哪些选择。
只要这个层面想明白,很多 DP 题都会更顺。