动态规划
文章平均质量分 73
--Xc
这个作者很懒,什么都没留下…
展开
-
动态规划经典问题----最长公共子序列
给定两个序列 X={x1,x2,x3,…,xm}和 Y={y1,y2,y3,…,yn},找出 X 和 Y 的一个最长的公共子序列。例如:X=(A,B,C,B,A,D,B),Y=(B,C,B,A,A,C),那么最长公共子序列是 B,C,B,A;分析:由于如果直接暴力破解,时间复杂度是我们避之不及的爆炸性指数。可以用动态规划分析其最优子结构,然后建立最优值的递归式,有点类似于我们中学所学数列中的通项,...原创 2018-06-02 17:43:48 · 1283 阅读 · 0 评论 -
01背包问题--记忆化搜索and动态规划
继上一篇代码的优化:分析:暴力搜索的代码可知,反复调用时有些同一参数调用了几次白白浪费了计算时间。我们可以利用记忆化数组,把已经计算过的参数的结果记录下来,下次需要用时可以直接返回结果。参数的组合为nw种,而函数内只调用2次递归,所以时间复杂度为O(nm),比起O(2^n)效率大幅度提高。代码:#include<iostream>#include<string.h>us...原创 2018-06-10 09:53:07 · 1114 阅读 · 0 评论 -
DNA基因鉴定----编辑距离DP
我们经常会听说 DNA 亲子鉴定是怎么回事呢?人类的 DNA 由 4 个基本字母{A,C,G,T}构成,包含了成千上亿个字符。如果两个人的 DNA序列相差 0.1%,仍然意味着有 300 万个位置不同,所以我们通常看到的 DNA 亲子鉴定报告上结论有:相似度 99.99%,不排除亲子关系。怎么判断两个基因的相似度呢?生物学上给出了一种编辑距离的概念。例如两个字符串 FAMILY 和 FRAME,...原创 2018-06-30 09:23:57 · 1528 阅读 · 0 评论 -
快速计算----矩阵连乘--DP
给定 n 个矩阵{A1,A2,A3,…,An},其中,Ai 和 Ai+1(i=1,2,…,n−1)是可乘的。用加括号的方法表示矩阵连乘的次序,不同的计算次序计算量(乘法次数)是不同的,找出一种加括号的方法,使得矩阵连乘的计算量最小例如:A1 是 M5×10 的矩阵;A2 是 M10×100 的矩阵;A3 是 M100×2 的矩阵。那么有两种加括号的方法:(1)(A1 A2)A3;(2)A1(A2 ...原创 2018-07-05 15:46:54 · 4470 阅读 · 0 评论 -
百度之星-Disk Schedule--双调旅行商问题
终于有时间更新了。。。。。Problem Description有很多从磁盘读取数据的需求,包括顺序读取、随机读取。为了提高效率,需要人为安排磁盘读取。然而,在现实中,这种做法很复杂。我们考虑一个相对简单的场景。磁盘有许多轨道,每个轨道有许多扇区,用于存储数据。当我们想在特定扇区来读取数据时,磁头需要跳转到特定的轨道、具体扇区进行读取操作。为了简单,我们假设磁头可以在某个轨道顺时针或逆时...原创 2019-02-04 20:18:13 · 238 阅读 · 0 评论