今天上了动规,动态规划的知识点我回想了一下,有以下几种:
怎么判断是否使用动规:
1.无后效性:
就是当你已经做出某种决定时,就只会确定这种状态,不会被影响。
2.最优子结构:
通俗一点,就是小波鼠干的最轻松的活给其他波鼠干,依然是最快的,就是最优的。
3.重叠子问题:
子问题被重复计算多次(如斐波那契数列递归求解)
如何使用动态规划:
1.划分界限:
做前先使用双脑想一下是否满足动态规划的条件
2. 定义状态:
用变量描述问题的子结构(如 dp[i] 表示第 i 个阶段的最优解)
3.状态转移方程
建立子问题间的递推关系(如 dp[i] = max(dp[i-1], dp[i-2] + nums[i]))dxd说这是重点。
4.初始化与边界
设置初始值(如 dp[0] = 0, dp[1] = 1)
5.输出结果
从最终状态回溯或直接获取解(如 dp[n] 为所求)
最后想说:快讲背包DP,不然我怎么做蓝题啊!