leetcode/notes/src/dynamic-programming.md

611 B

总结

和贪心相似,从将问题划分为多个子问题,最后得出最终问题的解,但是区别在于每一步之间涉及到状态推导,下一步是基于上一步的结果和之前的记忆(也就是上上次,上上上次等的结果)经过一定逻辑推导得出的。

分五步:

  1. 确定 dp[i] 是什么
  2. 确定递推公式
  3. dp 数组如何初始化
  4. 确定遍历顺序(从前向后还是从后向前)
  5. 推几个来验证

技巧:

  • 如果可以的话,初始化 dp 的长度,而不要每次都 dp.push_back()。初始化能够有更好的性能。