最长公共子序列
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列。
tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最...
分类:
其他好文 时间:
2014-09-07 17:20:25
阅读次数:
221
最长公共子串(方法一:暴力+RK匹配,方法二:DP+空间优化):给定一个query和一个text,均由小写字母组成。要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度。例如, query为“acbac”,text为“acaccbabb”,那么text中的“cba”为最长的连续出现在query中的字母序列,因此,返回结果应该为其长度3。...
分类:
其他好文 时间:
2014-09-05 21:10:32
阅读次数:
378
最长公共子串也是一个动态规划的问题,先求出子问题的解,然后才能求出最优解。首先我们来看设X = , Y= ,设C[i][j]为串 Xi和 Yj的最长公共子串长度,则C[i][j] = C[i-1][j-1] +1, Xi== YjC[i][j] = 0,Xi!= Yj申请一个m*n的数组,同时计算出...
分类:
其他好文 时间:
2014-09-05 17:48:01
阅读次数:
167
本文讨论了最长公共子串的的相关算法的时间复杂度,然后在后缀数组的基础上提出了一个时间复杂度为o(n^2*logn),空间复杂度为o(n)的算法。该算法虽然不及动态规划和后缀树算法的复杂度低,但其重要的优势在于可以编码简单,代码易于理解,适合快速实现。
分类:
其他好文 时间:
2014-09-03 16:26:16
阅读次数:
309
题目描述:给定一个query和一个text,均由小写字母组成。要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度。例如,query为“acbac”,text为“acaccbabb”,那么text中的“cba”为最长的连...
分类:
其他好文 时间:
2014-09-01 21:17:23
阅读次数:
175
昨天的问题方案一:寻找hash函数,可行性极低。方案二:载入内存,维护成一个守护进程的服务。难度比较大。方案三:使用前5位来索引,由前3位增至前5位唯一性,理论上是分拆记录扩大100倍,但可以就地利用mysql,最易行。方案四:使用方案三,但增加一个表以减少冗余,但代价新开一个表,并且每次查询都se...
分类:
其他好文 时间:
2014-08-29 22:31:58
阅读次数:
300
题意:给出两个字符串,求最长公共子串的长度。
题解:首先将两个字符串连在一起,并在中间加一个特殊字符(字串中不存在的)分割,然后两个串的最长公共字串就变成了所有后缀的最长公共前缀。这时就要用到height数组,因为任意两个后缀的公共前缀必定是某些height值中的最小值,而这个值如果最大则一定是height中的最大值。在此题中还要注意height最大一定要在两个值所代表的后缀分属不同的字...
分类:
其他好文 时间:
2014-08-24 10:19:22
阅读次数:
184
hdu题目poj题目参考了罗穗骞的论文《后缀数组——处理字符串的有力工具》题意:求两个序列的最长公共子串思路:后缀数组经典题目之一(模版题)//后缀数组sa:将s的n个后缀从小到大排序后将 排序后的后缀的开头位置 顺次放入sa中,则sa[i]储存的是排第i大的后缀的开头位置。简单的记忆就是“排第几的...
分类:
其他好文 时间:
2014-08-18 23:24:13
阅读次数:
367
spoj1811LCS
问两个字符串最长公共子串。
做法很简单。匹配成功,则tl++,失败,从父指针回退,tl=t[now].len。
从这题可以清楚了解后缀自动机fa指针的性质:
指向一个状态,这个状态的接受串s[x..x+i]是与当前状态的接受串后缀s[j-i..j]匹配是最长的一个。
这里是不是发现了一个和KMP很像的性质?
KMP在失配时通过next数组回退,那么这...
分类:
其他好文 时间:
2014-08-15 21:11:29
阅读次数:
281
题意:给定一个字符串,求最少添加多少个字符可使得该字符串变为回文字符串
分析:设原序列S的逆序列为S' ,最少需要补充的字母数 = 原序列S的长度 - S和S'的最长公共子串长度
原因:要求最少添加几个字符,我们可以先从原串中找到一个最长回文串,然后对于原串中不属于这个回文串的字符,在它关于回文串中心的对称位置添加一个相同字符即可。那么需要添加的字符数量即为n-最长回文串长度。
最长回文串可以看作是原串中前面和后面字符的一种匹配(每个后面的字符在前面找到一个符合位置要求的与它相同的字符)。这种的回文匹配和原...
分类:
其他好文 时间:
2014-08-15 18:02:39
阅读次数:
223