动态规划
左高右低
Angry Crow Takes Flight
展开
-
Java-动态规划学习(一)
动态规划的定义动态规划的意义就是通过采用递推(或者分而治之)的策略,通过解决大问题的子问题从而解决整体的做法。动态规划的核心思想是巧妙的将问题拆分成多个子问题,通过计算子问题而得到整体问题的解。而子问题又可以拆分成更多的子问题,从而用类似递推迭代的方法解决要求的问题。动态规划的核心解题步骤第一步: 状态的定义第二步: 状态转移方程的定义状态指的是在求解问题时对问题的转换。状态的定义:...原创 2019-08-19 15:43:51 · 194 阅读 · 0 评论 -
Java-动态规划学习(二)数塔取数问题
了解了基本概念后,多做几个题来完善对动态规划的认识数塔取数问题一个高度为N的由正整数组成的三角形,从上走到下,求经过的数字和的最大值。 每次只能走到下一层相邻的数上,例如从第3层的6向下走,只能走到第4层的2或9上。该三角形第n层有n个数字,例如:第一层有一个数字: 5第二层有两个数字: 8 4第三层有三个数字: 3 6 9第四层有四个数字: 7 2 ...原创 2019-08-19 18:09:36 · 909 阅读 · 0 评论 -
Java-动态规划学习(三)编辑距离
不多说了,放题编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。 例如将kitten一字转成sitting: sitten (k->s) sittin (e->i) sitting (->g) 所以kit...原创 2019-08-20 12:58:04 · 178 阅读 · 0 评论 -
Java-动态规划(四)矩阵取数问题
一个N*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,从左上走到右下,只能向下向右走,求能够获得的最大价值。例如:3 * 3的方格。1 3 3 2 1 3 2 2 1能够获得的最大价值为:11。将问题进行转换 :Fi,j表示到每一步的最大价值,那么一个N*N的矩阵,最大价值就是求Fn,n分析的关键在于,我当前Fi,j是如何得到的,由规则知只能从当前数的上方,和...原创 2019-08-20 14:20:46 · 669 阅读 · 0 评论 -
Java-动态规划学习(五)背包问题
有 n 个物品和一个大小为 m 的背包. 给定数组 A 表示每个物品的大小和数组 V 表示每个物品的价值,问最多能装入背包的总价值是多大?Example 1:Input: m = 10, A = [2, 3, 5, 7], V = [1, 5, 2, 4]Output: 9Explanation: Put A[1] and A[3] into backpack, getting the m...原创 2019-08-29 00:39:53 · 269 阅读 · 0 评论