跳到正文
前端知识库
算法

动态规划 高频追问 Q&A

A: 出现“最优解 + 重复子问题 + 子问题有重叠”时优先考虑 DP。(深入阅读:动态规划基础知识速览、何时考虑动态规划)

2 分钟

动态规划 高频追问 Q&A

1. Q: 什么时候应该想到用动态规划?

A: 出现“最优解 + 重复子问题 + 子问题有重叠”时优先考虑 DP。(深入阅读:动态规划基础知识速览何时考虑动态规划

2. Q: 状态定义总写不出来怎么办?

A: 先问“答案和谁有关”。通常从“以 i 结尾/到 i 为止/区间 i~j”三类定义切入。(深入阅读:状态设计的常见维度线性 DP

3. Q: 转移方程如何推导?

A: 用“最后一步”思维,把当前决策拆成互斥情况,再取 max/min/sum。(深入阅读:从暴力搜索推导状态背包 DP

4. Q: 为什么有的题能降维到一维?

A: 当 dp[i][j] 只依赖上一行或当前行左侧时可滚动数组;关键是遍历顺序正确。(深入阅读:背包 DP线性 DP

5. Q: DP 和贪心怎么区分?

A: 贪心每步只看局部最优;DP 会比较多条历史路径并保留全局最优状态。(深入阅读:动态规划基础知识速览贪心基础知识速览

6. Q: 面试时如何快速写稳?

A: 先写状态语义、边界、转移,再手推 2~3 个小样例验证。(深入阅读:动态规划面试表达模板线性 DP

7. Q: 分治和动态规划怎么区分?

A: 分治的子问题通常相互独立,动态规划的子问题有重叠并需要复用结果;都可用递归实现,但状态依赖和缓存方式不同。(深入阅读:分治、动态规划、贪心和回溯的区别复杂度分析方法与陷阱

8. Q: 贪心为什么不能只看几个样例?

A: 局部最优未必推出全局最优,必须用交换论证、反证或其他正确性证明;无法证明时应考虑 DP 或搜索。(深入阅读:贪心基础知识速览区间贪心