最长公共子序列
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述
咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。
tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合...
分类:
其他好文 时间:
2014-08-15 00:05:56
阅读次数:
335
原文链接动态规划法经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。解决思想:为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于...
分类:
其他好文 时间:
2014-08-14 23:09:56
阅读次数:
183
题目:uva10635Prince and Princess(LIS)
题目大意:求最长相同公共子序列。
解题思路:因为数据很大,62500不能用之前的那种求LIS的做法来做。可以将第一个路线的整数重新排个序(0...p),然后之后的那个路线因为要找相同的最长子序列,所以要将它原来的数字映射成第一条路线新的数字。这样之后就只需要找第二个路线的LIS就可以了。
nlog(n)...
分类:
其他好文 时间:
2014-08-13 22:26:17
阅读次数:
229
最长上升子序列就是求给定序列的最长的递增序列,其中不要求序列的元素在原序列中保持连续。
为了方便理解,可以举个例子:
inta[] = {0,2,1,5,3,6,4,8,9,7}(数组下标从1开始)的一个最长的子序列1,3,4,7,9。
利用动态规划的思想,可以方便的求取这个解。
为了方便解释,我们定义dp(n)为长度为1至下标为n的最长子序列的长度(数组下标假设从1开始),{a[1],a...
分类:
其他好文 时间:
2014-08-13 14:55:17
阅读次数:
195
作为新人,之前对C,C++了解的比较少,关于算法方面更是一窍不通,但最近却痴迷上了算法,哪怕是前辈们不屑一顾的东东,我弄明白了后都会欣喜若狂!今天将遇到的问题和java实现贴出来和同为新人的博友分享,老鸟可以可以直接关网页了。定义: 子序列:一个给定序列的子序列是再该序列中删去若干元素后得到的序列....
分类:
其他好文 时间:
2014-08-12 12:39:14
阅读次数:
199
给出两个由数字和字母组成的非空字符串S,T,求:1)S与T的最长公共子序列的长度。2)S与T的本质不同的非空公共子序列的个数。3)S与T的各种长度的本质不同的非空公共子序列的个数。思考过程:考场上,果断只会第一问,但是听完题解后,发现事实上他们的思想和第一问是一致的。(此题解借鉴讲题解人)首先考虑第...
分类:
其他好文 时间:
2014-08-12 00:01:53
阅读次数:
473
~~~~
题意就是找m组序列的最长连续公共子序列。
原来可以直接枚举。
从大到小枚举第一条序列长度的子序列,看下面m-1组序列是否有,找到的第一个必然是最优的(也是一个优化吧);
题目链接:http://poj.org/problem?id=3080
~~~~
#include
#include
#include
#include
using namespace std;
const...
分类:
其他好文 时间:
2014-08-11 12:06:52
阅读次数:
221
~~~~
题目意思问将序列 x 转化成序列 y 需要多少步操作。
题目链接:http://poj.org/problem?id=3356
~~~~
我的想法先求的两条序列的最长公共子序列。余下不相同或者是缺少的部分做相应的处理就好。
最长公共子序列都会吧,于是····
#include
#include
#include
#include
#define N 1000+10
using...
分类:
其他好文 时间:
2014-08-11 12:02:32
阅读次数:
238
经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。
为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。
【问题】 求两字符序列的最长公共字符子序列
问题描述:字符序列的子...
分类:
其他好文 时间:
2014-08-09 18:46:08
阅读次数:
288
一、什么是最长公共子序列 什么是最长公共子序列呢?举个简单的例子吧,一个数列S,若分别是两个或多个已知序列的子序列,且是所有符合条件序列中最长的,则S称为已知序列的最长公共子序列。 举例如下,如:有两个随机数列,1 2 3 4 5 6 和 3 4 5 8 9,则它们的最长公共子序列便是:3 4 5....
分类:
其他好文 时间:
2014-08-09 18:15:58
阅读次数:
311