动态规划
知识点/步骤:
五部曲:
1.确认dp所代表的含义
方法:大部分都是dp放的是问题问的东西,可能是一维的,可能是二维的,可以根据方向来判断
(二维转一维也存在知识点)
有时候也不是,而是一个比较好求的情况,然后后面才去求真正的结果,比如最长公共子序列二
注意一个问题:即后效性,即看是否是从前面一个,如果不是的话,就不要定义为以前i项为结尾,而是定义为以第i项为结尾,然后去推导递推公式
其中前面一个是不用遍历j的,后面一个是需要遍历j的
2.递推公式
方法:后一个状态是前一个状态推导出来的,就是需要举例
有时候难点在于怎么推导:
推导的时候可以使用dp[i][j]和画图来思考
有时候是需要进行分类讨论的,分类讨论的一般是什么????
一般讨论的是题目所说的情况,比如是否相等,然后就是看在这些情况下dp[i][j]如何得到
3.初始化
方法:根据公式来进行初始化
4.遍历方向
方法:一般都是从左往右,从上到下
5.举例子
举例子其实就是填表格
有时候就是需要换一个状态定义

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

浙公网安备 33010602011771号