今天上了动规,动态规划的知识点我回想了一下,有以下几种:

怎么判断是否使用动规:

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,不然我怎么做蓝题啊!