# 第 9 节 总结

  • 动态规划在「力扣」上虽然只有一个标签,但是它其实是有多个标签的,大家在学习的过程中需要掌握不同类型的动态规划问题,当然不需要全部掌握,优先掌握面试中考察的动态规划问题;
  • 初学的时候,可以先掌握「自顶向下」的「记忆化递归」,再慢慢熟悉「自底向上」的「递推」写法;
  • 如果在题解区或者讨论区看到一些代码用的变量很少,这样的代码是空间优化的写法,不是很好理解,我们需要先理解非空间优化的写法,再去理解空间优化的写法就不难了;
  • 抓住状态的定义,状态的描述一定要非常具体、清晰;
  • 对「无后效性」的理解非常重要,我们在学习的过程中,需要花时间思考和总结,到底是怎么想到这样设计状态的呢?怎样才能求解问题的过程中每个问题只求解一次,求解的过程构成了有向无环图;
  • 如果对求解问题的过程不太清楚,用小规模测试用例在纸上写写画画是一个有效的办法,就是画一张表格手动写一下程序是怎么算出结果的;
  • 有时候,我们在解决问题的过程中,会发现状态转移方程不好得到(即子问题之间的关系不容易得到),会去修改状态定义。需要我们有一定的做题经验。

作者:liweiwei1419 链接:https://suanfa8.com/dynamic-programming/summarize 来源:算法吧 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Last Updated: 11/19/2024, 11:31:47 AM