问题:最长公共子序列就是寻找两个给定序列的子序列,该子序列在两个序列中以相同的顺序出现,但是不必要是连续的。例如序列X=ABCBDAB,Y=BDCABA。序列BCA是X和Y的一个公共子序列,但是不是X和Y的最长公共子序列,子序列BCBA是X和Y的一个LCS,序列BDAB也是。思路:1、最简单的方法就...
分类:
其他好文 时间:
2015-04-30 17:54:16
阅读次数:
103
动态规划问题一般具有两个要素:最优子结构与子问题重叠。通常在求解LCS问题时,我们都会用到两种方法:1.momo-ization(备忘录方法)利用了该问题的重叠子问题特性,而重叠子问题可以使用递归直接解决0ABCBDAB000000000B00111111D00111222C00122222A01122232B01223334A0122334..
分类:
其他好文 时间:
2015-04-22 18:45:50
阅读次数:
159
简述: LCS问题,即最长公共子序列问题,给定两个序列X={x1, x2, …, xm}和Y={y1, y2, …, yn},求X、Y最长的公共子序列。与LIS类似,LCS也是可以不连续的。解题思路:本人觉得在这个问题上算法导论讲的很好,所以在此我主要是整理。
1、首先我们来考虑暴力搜索求解的方法,我们要暴力枚举X的所有子序列,然后再看看是不是也是Y的子序列,这样的方法,显然时间复杂度是指数级的,...
分类:
其他好文 时间:
2015-03-28 08:58:06
阅读次数:
177
一、什么是最长公共子序列
什么是最长公共子序列呢?举个简单的例子吧,一个数列S,若分别是两个或多个已知序列的子序列,且是所有符合条件序列中最长的,则S称为已知序列的最长公共子序列。
举例如下,如:有两个随机数列,1 2 3 4 5 6 和 3 4 5 8 9,则它们的最长公共子序列便是:3 4 5。
一直不明白:最长公共子串和最...
分类:
其他好文 时间:
2015-02-02 12:39:26
阅读次数:
137
问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列。令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0,y1,…,yk-1”是X的子序列,存在X的一个严格递增下标序列,使得对所有的j=0,1,…,k-1,有xij=yj...
分类:
其他好文 时间:
2015-01-25 16:30:43
阅读次数:
253
/*
* copyleft@hustyangju
* 问题:longest common subsequece problem
* 思路:从底往上,利用动态规划,划分子问题,利用LCS子问题的长度变化,求得LCS
* 时间复杂度O(m*n)
* 空间复杂度O(m*n)
*/
#include
#include
using namespace std;
class lcs
{
p...
分类:
编程语言 时间:
2014-12-26 13:01:52
阅读次数:
468
/*
分析此问题可知,为最长子序列(LCS)问题的变形。
假设两个子序列分别是X,Y;
Xi=(x1,x2...xi),Yj=(y1,y2..yj)分别是两个子序列的前i,j个子序列
求最长子序列;
1、当xi=yj时,dp[i][j]=dp[i-1][j-1]+1
2、当xi!=yj时,则dp[i][j]=max(dp[i-1][j],dp[i][j-1]...
分类:
其他好文 时间:
2014-12-16 22:42:53
阅读次数:
218
1、基本概念
一个给定序列的子序列就是该给定序列中去掉零个或者多个元素的序列。形式化来讲就是:给定一个序列X={x1,x2,……,xm},另外一个序列Z={z1、z2、……,zk},如果存在X的一个严格递增小标序列1,i2……,ik>,使得对所有j=1,2,……k,有xij
= zj,则Z是X的子序列。例如:Z={B,C,D,B}是X={A,B,C,B,D,A,B}的一个子序列,相...
分类:
编程语言 时间:
2014-12-15 09:03:05
阅读次数:
366
LCS问题,基础DP。
让我很忧伤的WA了很多次。只是一个LCS问题,需要记录一下路径。
自己的想办法记录path出错,最后只好用标记。
没有什么优化,二维数组,递归打印,cin.eof() 来识别 end of file 标识。
至于单词用map 映射的。其实也用不着,直接二维string或者 二维char 然后strcmp 也行。
Special Judge
...
分类:
其他好文 时间:
2014-11-18 14:46:41
阅读次数:
196
DP,题意晦涩难懂。LCS问题。
源序列要经过转换。 比如 4 2 1 3. 是指 事件1 发生在第四,事件2 发生在第二,事件3发生在第一 ,事件4发生在 第三。
转换后的序列为 : 3 2 4 1 。
所以说很丧病。UVA很多题都是一大堆题意。
我用的二维数组。其实可以优化 滚动或者一维。
#include
#include
#include
#include
#...
分类:
其他好文 时间:
2014-11-04 13:12:24
阅读次数:
127