其他分享
首页 > 其他分享> > 第5周总结

第5周总结

作者:互联网

本周主要学了动态规划
**

动态规划题目特点:

**
1.计数
-有多少种方式走到右下角
-有多少种方法选出k个数使得和是sum
2.求最大最小值
-从左上角走到右下角路径的最大数字和
-最长上升子序列长度
3.求存在性
-取石子游戏,先手是否必胜
-能不能选出k个数使得和是sum

四步

1.确定状态
状态在动态规划中的作用属于定海神针
简单的说,解动态规划的时候需要开一
个数组,数组的每个元素f[i]或者f[i][j]
代表什么
-类似于解数学题中,X,Y,Z代表什么

确定状态需要两个意识:
-最后一步
指的就是最优策略的最后一个决策
关键点1
我们不关心最后一个决策之前的所有决策是怎么做出来的,但我们知道之前的决策所造成的结果是总决策的结果减去最后一个决策的结果。
关键点2
因为是最优策略,所以结果一定要最符合题意,否则就不是最优解。
-子问题
将原问题缩小,变成一个子问题,比如求
n个数的和,转化成求n-1个数的和,简化
后,将状态转移

2.为什么要用动态规划,动态规划与递归算法的区别?
递归算法会出现重复的运算,会消耗多余的时间。
而动态规划会保存一个阶段(子问题)的结果,
并影响后续的计算过程,避免时间复杂度的增加。

3.初始条件和边界情况
初始条件:用转移方程算不出来,需要手工定义
边界情况:主要是不要越界,数组越界。
每一个动态规划的题目都会用到状态这个关键的点,但是状态转移方程需要拥有一个边界作为这个状态转移方程停止转移状态的条件,而这个条件对于解动态规划算法的题目来说,也是最为关键的点之一,其实就包含在写出状态转移方程这一步骤中,其次就是初始条件。

4.计算顺序
从已知推向未知,如:知道x-1时,
不知道x,所以是从x-1往x计算。
(动态规划会节省时间,减少计算次数,降低时间复杂度)
小结:
1.确定状态
-最后一步
-化成子问题
2.转移方程
-根据具体题目确定转移方程(更具体的就是数值)
3.初始条件和边界情况
4.计算顺序
-用到的状态要先于要解出的状态算出。

动态规划的终极目标
消除冗杂,加速计算

标签:总结,状态,方程,初始条件,动态,规划,转移
来源: https://blog.csdn.net/weixin_51579210/article/details/115582660