![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 94
Java硬件工程师
中国科学技术大学毕业,原支付宝Java开发工程师,立志做一名资深全栈工程师
展开
-
动态规划之线性DP
所谓线性DP是,是指我们的递推方程是有着明显的线性关系的。动态规划中每个状态都是多维的状态,多维状态有一个求解的顺序,比如背包问题是一个二维的,求的时候一行一行的来求,这样的DP我们称之为线性DP。数字三角形问题描述给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 7 3 8 8 1 0 2 7 4 44 5 2原创 2021-03-01 18:45:41 · 340 阅读 · 1 评论 -
动态规划之背包问题剖析
背包问题简介:有 N 件物品和一个容量是 V 的背包。每个物品有两个属性体积和价值,第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。01背包问题:每件物品最多只能用一次。要么0次,要么1次。完全背包问题:每件物品有无限个选择,我们尽可能的装入进去,来保证总价值最大多重背包问题:每个物品的个数不一样,最多有si个。分组背包问题:物品有N组,每一组物品里面有若干个。每一组里面最多只能选择一个物品所以我们可以发现背包问题,本质上是给原创 2021-02-26 14:06:38 · 288 阅读 · 0 评论 -
动态规划之神奇的口袋问题
问题描述有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40John现在有n(1<=n<=20)个想要得到的物品,每个物品的体积分别是a1,a2,…an。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式输入输入的第一行是正整数n(1<=n<=20),表示不同的物品的数目。接下来的n行,每行有一个1到40之间的正整数,分别给出原创 2020-08-29 14:44:36 · 2053 阅读 · 1 评论 -
程序设计与算法----动态规划之最长上升子序列
问题描述给出两个字符串,求出这样的一个最长的公共子序列的长度:子序列中的每个字符都能在两个原串中找到,而且每个字符的先后顺序和原串中的顺序一致。样例输入abcfbc abfcabprogramming contestabcd mnp样例输出420算法思想输入两个串s1,s2,设MaxLen(I,j)表示:s1左边的第i个字符形成的子串,与s2左边的j个字符形成的子串的最长公共子序列的长度(i,j从0开始算)MaxLen(i,j)就是本题的状态。假定len1=strlen(原创 2020-08-08 20:24:12 · 1744 阅读 · 0 评论 -
程序设计与算法----动态规划之最长公共子序列
问题描述一个数的序列ai,当a1<a2<…<as的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2,….an)我们可以得到一个上升的子序列(ai1,ai2,…,aik),这里1<=i1<i2<…ik<=N。比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等等,这些子序列中最长的长度是4,比如子序列(1,3,5,8)你的任务,就是对于给定的序列,求出最长上升子序列的长度。输入数据输入的第一行是序列的长原创 2020-08-08 17:17:01 · 1699 阅读 · 0 评论 -
动态规划解题一般思路
1.递归到动规的一般转化方法递归函数有n个参数,就定义一个n为值的逆过程的数组,数组的下标是递归函数参数的取值范围,数组元素的值是递归函数的返回值,这样就可以从边界值开始,逐步填充数组,相当于计算递归函数类比数字三角形,从底部的一列开始,从下往上推,逐步填充数组。由已知推未知,从递归到递推2.动规解题的一般思路2.1.将原问题分解为子问题把原问题分解为若干个子问题,子问题和原问题形式相同或者类似,只不过规模变小了。子问题都解决,原问题即解决(数字三角形为例,原问题是数字i,j到底边的最大和,子原创 2020-08-05 18:47:11 · 2444 阅读 · 0 评论 -
动态规划之数字三角形问题
问题描述在数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或者右下走。只需要求出这个最大和即可。不必给出具体路径。三角形的行数大于1小于等于100,数字为0-99输入格式5 //三角形行数。下面是三角形73 88 1 02 7 4 44 5 2 6 5要求输出最大和样例输入5 73 88 1 02 7 4 44 5 2 6 5样例输出30算法思想73 88 1 02 7 4 44 5 2 6 5右原创 2020-08-05 17:01:35 · 2703 阅读 · 1 评论