
DP
文章平均质量分 94
Neo_kh
这个作者很懒,什么都没留下…
展开
-
动态规划详解(第一讲)
算法思想来自《算法问题实战策略》【韩】具宗万著重复子问题与制表动态规划(DP,dynamic programming)和分治法具有类似的处理方式,都是先把问题分割成若干子问题,然后求出这些子问题的解,再利用这些解得到整个问题的最后答案。不过,动态规划和分治法在分割子问题的方式上存在不同。DP中,有些子问题的计算结果会用于多个问题的求解过程(如果不理解参考下面的示例)。因此,在对子问题进...原创 2018-03-20 21:22:46 · 406 阅读 · 0 评论 -
HDU2064 汉诺塔III 递推做法
HDU2064 汉诺塔很郁闷,以前会做的汉诺塔问题居然一开始没想出来,好记性不如烂笔头,今日把这道题目记下来,方便以后查阅 ( ・◡・) 这道题目和经典汉诺塔问题还不太一样,原题链接在此:HDU2064 不过题目再怎么变,思路还是一样的。 汉诺塔问题重点在于找到递推式,分析思路即模拟搬圆盘的过程,设step[i]为搬动第i个圆盘需要的最小步数。思路如下:首先将 i-1 个圆盘...原创 2018-07-27 18:44:32 · 1069 阅读 · 1 评论 -
动态规划详解(第二讲)——最长公共子序列问题(LCS)
现在我们看一个经典问题,这个问题说明了动态规划的基本原理。 在这之前,我们先总结一下能使用动态规划方法解决的问题的特点:列表内容最长公共子序列问题(LCS)公共子序列的意思是在两个序列中,按顺序找出共同出现的元素,这些元素按顺序排列就是原序列的子序列:例如A=zxyxyz,B=xyyzx;则A和B的一个公共子序列为:xyy,而最长公共子序列是:xyyz。因此,A和B的LCS长...原创 2018-07-30 11:17:44 · 1477 阅读 · 0 评论 -
动态规划详解(第三讲)——矩阵链相乘
这类题目体现了DP的实质,也是经典问题。(•̀˓◞•́)假设我们要用标准的矩阵乘法计算M1M1M_1、M2M2M_2、M3M3M_3的乘积M1M2M3M1M2M3M_1M_2M_3,这三个矩阵的维数分别是2x10,10x2,2x10。如果我们先把M1M1M_1和M2M2M_2相乘,然后把结果和M3M3M_3相乘,即((M1M2)M3)((M1M2)M3)((M_1M_2)M_3)。那么要...原创 2018-07-30 21:55:07 · 6468 阅读 · 0 评论