动态规划

知识点/步骤:

五部曲:

1.确认dp所代表的含义

方法:大部分都是dp放的是问题问的东西,可能是一维的,可能是二维的,可以根据方向来判断
(二维转一维也存在知识点)

有时候也不是,而是一个比较好求的情况,然后后面才去求真正的结果,比如最长公共子序列二

注意一个问题:即后效性,即看是否是从前面一个,如果不是的话,就不要定义为以前i项为结尾,而是定义为以第i项为结尾,然后去推导递推公式
其中前面一个是不用遍历j的,后面一个是需要遍历j的

2.递推公式

方法:后一个状态是前一个状态推导出来的,就是需要举例
有时候难点在于怎么推导:
推导的时候可以使用dp[i][j]和画图来思考

有时候是需要进行分类讨论的,分类讨论的一般是什么????
一般讨论的是题目所说的情况,比如是否相等,然后就是看在这些情况下dp[i][j]如何得到

3.初始化

方法:根据公式来进行初始化

4.遍历方向

方法:一般都是从左往右,从上到下

5.举例子

举例子其实就是填表格

有时候就是需要换一个状态定义

牛客上比较难的题目:65,69-77

posted @ 2023-08-07 14:43  hongyc77  阅读(43)  评论(0)    收藏  举报