leetcode/notes/src/dynamic-programming.md

17 lines
773 B
Markdown
Raw Normal View History

2023-02-08 04:20:15 +00:00
# 总结
和贪心相似,从将问题划分为多个子问题,最后得出最终问题的解,但是区别在于每一步之间涉及到状态推导,下一步是基于上一步的结果和之前的记忆(也就是上上次,上上上次等的结果)经过一定逻辑推导得出的。
分五步:
1. 确定 `dp[i]` 是什么
2. 确定递推公式
3. `dp` 数组如何初始化
2023-02-09 07:52:59 +00:00
4. 确定遍历顺序(从前向后还是从后向前)和范围
2023-02-08 04:20:15 +00:00
5. 推几个来验证
2023-02-08 04:46:24 +00:00
技巧:
- 如果可以的话,初始化 `dp` 的长度,而不要每次都 `dp.push_back()`。初始化能够有更好的性能。
2023-02-08 07:28:22 +00:00
- 知道用 DP ,也知道 `dp[i]` 应该用来表示什么但不知道递推关系。这个时候多举几个简单的例子找规律s0096