目录
Dynamic Programming:
定义:
DP定义:
动态规划是分治思想的延伸,通俗一点来说就是大事化小,小事化无的艺术。
在将大问题化解为小问题的分治过程中,保存对这些小问题已经处理好的结果,并供后面处理更大规模的问题时直接使用这些结果。
特点:
动态规划具备了以下三个特点
- 把原来的问题分解成了几个相似的子问题。
- 所有的子问题都只需要解决一次。
- 储存子问题的解
本质:
是对问题状态的定义和状态转移方程的定义(状态以及状态之间的递推关系)
考虑角度:
动态规划问题一般从以下四个角度考虑:
- 状态定义
- 状态间的转移方程定义
- 状态的初始化
- 返回结果
状态定义的要求:
定义的状态一定要形成递推关系
一句话概括:
三特点四要素两本质
适用场景:
最大值/最小值, 可不可行, 是不是,方案个数
题目详解:
第一题:斐波那契数列
https://blog.csdn.net/sakeww/article/details/122770286
第二题:字符串分割(Word Break)
https://blog.csdn.net/sakeww/article/details/122857096
第三题:三角矩阵(Triangle)
https://blog.csdn.net/sakeww/article/details/122861135
第四题:路径总数(Unique Paths)
https://blog.csdn.net/sakeww/article/details/122863621
第五题:最小路径和(Minimum Path Sum)
https://blog.csdn.net/sakeww/article/details/122864886
第六题:背包问题
https://blog.csdn.net/sakeww/article/details/122867718
第七题 回文串分割(Palindrome Partitioning)
https://blog.csdn.net/sakeww/article/details/122894050
第八题 编辑距离(Edit Distance)
https://blog.csdn.net/sakeww/article/details/122899542
第九题 不同子序列(Distinct Subsequences)
https://blog.csdn.net/sakeww/article/details/122900255