题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1403 题意: 给出两个字符串, 求他们的最长公共子串 思路: 两个字符串的最长公共子串长度显然就是两个字符串的所有后缀中的最长公共前缀长度. 可以先用一个没有出现的字符(便于后面区分后缀是否属于相同字 ...
分类:
编程语言 时间:
2017-08-29 22:57:53
阅读次数:
206
LCS(new char[]{'a','b','c','d'},new char[]{'b','c','d'}); [0, 0, 0][1, 0, 0][0, 2, 0][0, 0, 3] ...
分类:
其他好文 时间:
2017-08-23 21:45:13
阅读次数:
116
题目描述 查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。 输入描述: 输入两个字符串 输出描述: 返回重复出现的字符 示例1 输入 abcdefghijklmnop abcsafjklmnopqrstuvw 输出 jklmnop 查找两个字符串a,b中的最长公共子串。 ...
分类:
其他好文 时间:
2017-08-21 13:34:25
阅读次数:
348
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6138 题意:给n个串,每次询问x号串和y号串的最长公共子串的长度,这个子串必须是n个串中某个串的前缀 解法1:AC自动机。做法是把n个串建成AC自动机,前缀树中每个节点都当做结尾节点,val赋为trie ...
分类:
其他好文 时间:
2017-08-20 12:34:22
阅读次数:
188
使用矩阵来记录两个子串之间各个字符之间的对应关系。 最长子串:矩阵中数字最大的就是最长子串的长度。若对应位置字符相同,则c[i][j] = c[i-1][j-1] + 1 最长子序列:若对应位置字符相同,则c[i][j] = c[i-1][j-1] + 1,若不同,则max(c[i][j-1],c[ ...
分类:
编程语言 时间:
2017-08-17 18:34:58
阅读次数:
241
主要参考: 算法导论 最长公共子序列LCS(动态规划) 其中,理解递推公式之后,要理解代码中的c数组 是怎么变化的(结合下面这个图的过程,过程为:每一行,从左到右) 该文章中,打印LCS的过程(C语言,包括递归和非递归版本)也容易看懂。 Java版本可以参考:最长公共子串、最长公共子序列的Java实 ...
分类:
其他好文 时间:
2017-08-16 21:44:08
阅读次数:
155
两道题都可以用动态规划的方法做,只是状态转移方程不同。 最长公共子串(注意子串是连续的) 1、先建立一个二维数组array[str1.size()][str2.size()](全部初始化为0),初始化第一行和第一列(元素相同处置1),然后进入状态方程 2、状态转移方程: if(str1[i] == ...
分类:
其他好文 时间:
2017-08-10 16:59:09
阅读次数:
148
kuangbin 的模板 求最长公共子串长度 求字典序最小循环移位(可用最小表示法) 依次输出长度为 i (from 1 to |s|) 的所有子串中出现的最多次数 上面代码中 MAXN = 250000+7 时返回 WA ~~~~(>_<)~~~~ To be continued ... ... ...
分类:
其他好文 时间:
2017-08-08 00:33:27
阅读次数:
181
2017-08-06 15:41:04 writer:pprp 刚开始学dp,集训的讲的很难,但是还是得自己看,从简单到难,慢慢来(如果哪里有错误欢迎各位大佬指正) 题意如下: 给两个字符串,找到其中大的公共子序列,每个样例输出一个数; 最长公共子串(Longest Common Substirng ...
分类:
其他好文 时间:
2017-08-06 17:06:15
阅读次数:
201
LCS 最长公共子序列 最长公共子串(连续) 最短编辑距离 ...
分类:
其他好文 时间:
2017-08-06 12:55:24
阅读次数:
101