
算法—动态规划
JeffCoding
热爱移动互联网,热爱安卓,热爱Java
展开
-
动态规划 矩阵连乘问题
什么是动态规划看到把原始问题划分成一系列子问题,我们很容易想到分治算法,但是对于分治算法,很可能会遇到子问题被重复使用 就像下面这个矩阵连乘,分解为子问题就会出现三个重复子问题,用分治算法时,就会重复计算相同的子问题,使程序效率变得低下所以,这就是动态规划的用武之地:对于一个问题,可分为多个相关子问题,子问题的解被重复使用矩阵连乘问题对于矩阵连乘,假设A为10 * 100 的矩阵, B为100 *原创 2016-12-04 15:12:06 · 3371 阅读 · 0 评论 -
动态规划 最常公共子序列问题
动态规划前面一篇博文动态规划 矩阵连乘问题,学习了什么是动态规划,以及什么时候该用动态规划,总得来说就是: 当一个问题可以被分成若干个子问题求解,且子问题可以优化子结构,存在子问题重复的时候,就可以使用动态子结构。最长公共子序列问题最长公共子序列的定义:我们来考虑一下如何分为子问题设 两个序列分别为 X = {x1, x2, x3 …….xm}, Y = {y1, y2, y3 ……yn},他们的原创 2016-12-05 13:04:21 · 611 阅读 · 0 评论 -
Leet Code OJ 70. Climbing Stairs(爬楼梯问题)
题目You are climbing a stair case. It takes n steps to reach to the top.Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?这是一个爬楼梯问题,给定楼梯层数n,每一步只能走1层或者2层,问上到楼原创 2017-02-28 14:01:37 · 695 阅读 · 0 评论 -
动态规划 01背包问题(简单易懂)
之前讲过了动态规划的几个例子,分别是动态规划 矩阵连乘问题 和 动态规划 最常公共子序列问题,学习了动态规划的使用,而01背包问题作为动态规划的经典问题,同时对贪心算法也是一个很重要的补充,所以也必须掌握01背包问题的原理和实现。01背包问题题目描述:有编号分别为a,b,c,d,e的五件物品,它们的重量分别是2,2,6,5,4,它们的价值分别是6,3,5,4,6,现在给你个承重为10的背包,如何让原创 2016-12-07 13:17:29 · 2979 阅读 · 0 评论