算法设计与分析 —— 动态规划
文章平均质量分 51
Konjac.k
这个作者很懒,什么都没留下…
展开
-
最优二叉搜索树 (dp)
题目:给n个节点以及每个节点的将要被查询的概率pi,然后把它补充成一个满二叉树,用来补充的节点有n+1个,即di ,每个 di 也有一个查询的概率 qi 。构造最优的二叉搜索树,使总的查询次数最少。最优二叉搜索树:我的理解是,必须保持原二叉树的中序遍历序列不变的前提下,通过将大概率节点尽量排到接近根的位置,使得总查询次数最少的树。它根哈夫曼编码有相似之处,就是贪心的使大概率节点接近树根,但原创 2017-09-29 12:52:21 · 645 阅读 · 0 评论 -
矩阵连乘问题(dp)
题目:计算矩阵连乘积A1,A2,...,An,其中Ai的维度为p[i-1]*p[i]。输入规模n,p[0]~p[n],输出最少乘的次数和断点处也就是乘法顺序。思路:区间dp,m[i][j]表示从Ai到Aj区间内的最少乘的次数,枚举k(i用s[i][j]记录每次最少次数的时候是在哪个地方断开,即k的位置。详见代码。代码:#include using namespace s原创 2017-09-21 21:57:48 · 624 阅读 · 0 评论 -
数字三角问题(dp)
题目:问题描述:给定一个由n行数字组成的数字三角形,如下图所示 7 3 8 8 1 0 2 7 4 44 5 2 6 5 试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。 如上图最大值为30=7+3+8+7+5原创 2017-10-13 17:04:57 · 594 阅读 · 0 评论 -
流水作业调度(dp)
题目:n个作业{1,2,…,n}要在由2台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为ai和bi。流水作业调度问题要求确定这n个作业的最优加工顺序,使得从第一个作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需的时间最少。代码:#include using namespa原创 2017-10-13 17:06:03 · 2273 阅读 · 0 评论