动态规划的相关知识自己总是处于较为懵懂的阶段,可以说一直处于在不求甚解的阶段;难以下手,在知乎上面看到一篇比较好的回答,在此拾人牙慧对其进行总结。
首先动态规划自我感觉是比较考验个人逻辑思维的,需要找到不同步骤之间的逻辑联系以及采用合适的方式来表达对应的逻辑关系,以下内容基本来自知乎:怎样学好动态规划
动态规划,就是利用历史记录,来避免我们的重复计算。而这些历史记录,我们得需要一些变量来保存,一般是用一维数组或者二维数组来保存。下面我们先来讲下做动态规划题很重要的三个步骤:
一般来说动态规划题目都需要借助于数组,其中跳阶梯的问题是一维数组;棋盘格路径问题则是二维数组。动态规划80% 的题都是要用二维数组的,所以下面的题主要以二维数组为主。对动态规划进行优化的时候需要借助于画图,80% 的动态规划题都可以画图,其中 80% 的题都可以通过画图一下子知道怎么优化。
![](https://i-blog.csdnimg.cn/blog_migrate/242d903e0d8d63773db0cce3cabb882f.png)
主要提一下编辑距离题,感觉这一题也是非常典型的动态规划题,之前甚至对二维数组的由来都不求甚解。
编辑距离题说:插入一个字符、删除一个字符、替换一个字符三种操作,其实可以插入可以看做横向操作,删除可以看成纵向操作,而替换字符可以视作对角线操作,即插入+删除。这个时候带回理解题解中的三个等式,其实就可以理解了。
![](https://i-blog.csdnimg.cn/blog_migrate/3be3d97b82b5da2802327ed479d2b8e2.png)