
动态规划
桃三岁
这个作者很懒,什么都没留下…
展开
-
算法设计——最长上升子序列及Alignment题练习(动态规划)
最长上升子序列问题已知一个序列,求其子序列为上升子序列的最大值分析我们发现这个题,如果我们直接暴力也是可以出结果的但是暴力解决不了问题,所以我们还是得找方法关于暴力就不多说了我们来看看动态规划(动态规划需要最优子结构和重叠子问题)上课的时候,我一直没懂为啥要用一个序列里面的第i位来作为子序列中最后一位。我最开始就想的是求啥设啥,要求长度,我们就把长度作为规划目标这是不对的!!...原创 2020-05-03 23:40:20 · 394 阅读 · 0 评论 -
Charm Bracelet 0-1背包优化问题
题目描述:Charm Bracelet问题就是0-1背包的问题之前写过一个关于0-1背包的动态规划分析过程相同☞:0-1背包但是我们发现这个代码过不了内存超限那么我们需要对代码进行优化如何优化呢做了完全背包和多重背包后我们发现优化过程变得差不多了就是将二维降为一维注意第二层循环同样为倒序求解代码实现#include<stdio.h>#define N 500...原创 2020-05-03 17:15:28 · 203 阅读 · 0 评论 -
算法设计——多重背包(动态规划)
问题有n个物品,分别给出其重量、价值和数量,背包容量为m,求在背包容量内的物体价值最大值为多少?注意:每件物品最多取的数目不超过规定数目首先暴力一下我们知道完全背包的暴力就是在第三重循环中设置其数目那么这里,我们可以直接将条件换为k<=c[i]状态转移方程为和完全背包一致那么我们来看下代码#include<stdio.h>#define N 100int w...原创 2020-05-03 10:40:41 · 681 阅读 · 0 评论 -
算法设计——完全背包(动态规划)
问题有n个物品,分别给出其重量和价值,背包容量为m,求在背包容量内的物体价值最大值为多少?注意:每件物品可用无限次================================================来,让我们先看看最朴素的方法用一个三重循环来寻找答案,直接暴力求解这个三重循环是什么样的呢?和0-1背包前两重的含义一样,而第三重循环是为了限定物品个数的。瞧瞧状态方程我们...原创 2020-05-02 22:48:39 · 1017 阅读 · 1 评论 -
算法设计——天平平衡问题(Balance)(动态规划)
问题Gigel has a strange “balance” and he wants to poise it. Actually, the device is different from any other ordinary balance.It orders two arms of negligible weight and each arm’s length is 15. Some ...原创 2020-04-21 22:58:40 · 5301 阅读 · 0 评论 -
算法设计——0-1背包问题(动态规划)
问题给定n种物品和一背包wi :物品i的重量vi :物品i的重量价值C:背包的容量问:应如何选择装入背包的物品, 使得装入背包中物品的总价值最大?分析p[i][j]代表可选择物品为前i个,背包容量为j时的最大价值当j<w[i]时说明无法装入第i个物体,此时去掉第i个物品并无影响所以p[i][j]=p[i-1][j]当j>=w[i]时我们需要判断v[i]+p[i-1][...原创 2020-04-15 23:03:08 · 1137 阅读 · 0 评论 -
算法设计——流水作业调度(动态规划)
问题n个作业{1,2,…,n}要在由2台机器M1和M2组成的流水 线上完成加工。每个作业加工的顺序都是先在M1上加工 然后在M2上加工。M1和M2加工作业i所需的时间分别为ai 和bi。流水作业调度问题要求确定这n个作业的最优加工顺序, 使得从第一个作业在机器M1上开始加工,到最后一个作业 在机器M2上加工完成所需的时间最少。分析一般来说在M2上会有作业堆积和机器空闲两种状态,我们自然是希...原创 2020-04-15 21:42:42 · 5176 阅读 · 2 评论 -
算法设计——电路布线问题(动态规划)
问题在一块电路板的上、下2端分别有n个接线柱。根据电路设计,要求用导 线(i,π(i))将上端接线柱与下端接线柱相连,如图所示。其中π(i)是 {1,2,…,n}的一个排列。导线(i,π(i))称为该电路板上的第i条连线。对于任 何1≤i<j≤n,第i条连线和第j条连线相交的充分且必要的条件是π(i)>π(j)。 电路布线问题要确定将哪些连线安排在第一层上,使得该层上有尽可能 多的连...原创 2020-04-15 17:07:52 · 14000 阅读 · 11 评论 -
算法设计——多边形游戏(动态规划)
问题多边形游戏是一个单人玩的游戏,开始时有一个由n个顶点构 成的多边形。每个顶点被赋予一个整数值,每条边被赋予一个 运算符“+”或“*”。所有边依次用整数从1到n编号。游戏第1步,将一条边删除。 随后n-1步按以下方式操作: (1)选择一条边E以及由E连接着的2个顶点V1和V2;(2)用一个新的顶点取代边E以及由E连接着的2个顶点V1和V2。 将由顶点V1和V2的整数值通过边E上的运算得到的...原创 2020-04-15 14:40:02 · 6709 阅读 · 3 评论 -
算法设计——最大子段和(动态规划)
问题给定由n个整数(包含负整数)组成的序列a1,a2,…,an,求该序列子段和的 最大值。当所有整数均为负值时定义其最大子段和为0。**举个栗子:**当(a1,a2, a3, a4, a5,a6)=(-2,11,-4,13,-5,-2)时,最大子段和为:11-4+13=20一个简单算法我们可通过循环来找到最大的和当字段的开始下标确定后,若 要计算[i:j]的字段和可以利用 上一次计算的...原创 2020-04-13 21:46:56 · 12333 阅读 · 0 评论 -
算法设计——最长公共子序列(动态规划)
问题给定2个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是 序列X和Y的公共子序列。子序列的长度:子序列的元素个数。问题描述:给定2个序列X={x1,x2,…,xm}和Y={y1,y2,…,yn},求X和Y的最长公共子序列分析由此可见,2个序列的LCS包含了这2个序列前缀的LCS。因此, LCS问题具有最优子结构性质和子问题重叠性质。因此,可是用动态规划算法①当两序...原创 2020-04-13 21:24:39 · 2327 阅读 · 0 评论 -
算法设计——动态规划的基本要素
两大性质1.最优子结构2.子问题重叠性质最优子结构定义问题的最优解包含着其子问题的最优解。这种性质称为最优子结 构性质。证明首先假设由问题的最优解导出的子问题的解不是最优的。然后再设法说明在这个假设下可构造出比原问题最优解更好的解,从 而导致矛盾。利用问题的最优子结构性质,以自底向上的方式从子问题的最优 解逐步构造出整个问题的最优解。 最优子结构是问题能用动态规划算法求解的前提...原创 2020-04-13 20:44:29 · 2421 阅读 · 0 评论 -
算法设计——矩阵连乘(动态规划)
问题给定定n个矩阵 {A1,A2,A3…An}, 其中 Ai与Ai+1 是可乘的, 求矩阵连乘的最少计算乘法次数的顺序。分析为什么会有不同次数的乘法?由于矩阵A(mn)B(nr)乘法次数为mnr不同矩阵计算顺序会导致不同的计算次数...原创 2020-04-13 18:18:08 · 2156 阅读 · 1 评论