传送门 求 n 个串的最长公共子串。 和 2 个串的处理方法差不多。 把 n 个串拼接在一起,中间连上一个没有出现过的字符防止匹配过界。 求出 height 数组后二分公共子串长度给后缀数组分组。 然后 check,每一组中是否所有的字符串都包含。 ——代码 1 #include <cstdio>  ...
                            
                            
                                分类:
编程语言   时间:
2017-06-11 11:27:29   
                                阅读次数:
182
                             
                    
                        
                            
                            
                                    传送门 求两个串的公共子串(注意,这个公共子串是连续的一段) 把两个串连在一起,中间再加上一个原字符串中不存在的字符,避免过度匹配。 求一遍height,再从height中找满足条件的最大值即可。 为什么只需要相邻两字典序的后缀呢?因为字典序相邻公共前缀一定最大。 ——代码 1 #include < ...
                            
                            
                                分类:
编程语言   时间:
2017-06-10 17:11:27   
                                阅读次数:
127
                             
                    
                        
                            
                            
                                spoj 1812 LCS2 - Longest Common Substring II 题意: 给出最多n个字符串A[1], ..., A[n], 求这n个字符串的最长公共子串。 限制: 1 <= n <= 10 |A[i]| <= 1e5 思路: 和spoj 1811 LCS几乎相同的做法 把当 ...
                            
                            
                                分类:
其他好文   时间:
2017-06-10 15:22:39   
                                阅读次数:
157
                             
                    
                        
                            
                            
                                ?? 题意:给定两个字符串A 和B。求最长公共子串。 思路:将两个字符串连接起来中间用一个没出现过的符号切割。 所以答案为满足后缀在不同的串中且height值最大的height值 #include<cstdio> #include<cstring> #include<cmath> #include< ...
                            
                            
                                分类:
编程语言   时间:
2017-06-05 11:37:34   
                                阅读次数:
248
                             
                    
                        
                            
                            
                                    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1159 题目类型: 最大公共子串 题意概括: 给出两个字符串,求这两个字符串的最大公共子串 解题思路: 通过一个二维字符串,将两个字符串进行比较,遇到相同则将左上角的值+1赋予当前位置的值,如果不相同, ...
                            
                            
                                分类:
其他好文   时间:
2017-06-05 00:35:22   
                                阅读次数:
167
                             
                    
                        
                            
                            
                                Description A substring of a string T is defined as: T( i, k)= TiTi+1... Ti+k-1, 1≤ i≤ i+k-1≤| T|. Given two strings A, B and one integer K, we define ...
                            
                            
                                分类:
编程语言   时间:
2017-06-03 13:53:40   
                                阅读次数:
249
                             
                    
                        
                            
                            
                                动态规划算法。在T大某位老师的书中说就是递推+反复子问题。 动态规划算法的效率主要与反复子问题的处理有关。 典型的题目有 陪审团。最大公共子串问题 1,最大公共子串问题 这个是动态规划的基础题目。动态规划就是递推和反复子结构。 确定了递推关系后。找到一个能极大地降低反复运算的子结构至关重要。选的好了 ...
                            
                            
                                分类:
编程语言   时间:
2017-06-02 17:31:13   
                                阅读次数:
443
                             
                    
                        
                            
                            
                                    题意: 给你两个字符串,输出他们合并之后的字符串,合并的时候把A的后缀和B的前缀重叠合(或者把A的前缀和B的后缀重合)。要求合并后的串既包含A右包含B,且使得合并后的字符串尽量短,其次是使得合并后的字符串字典序尽量小. 分析: 首先A和B合并他们一定是首尾重叠相连,要求合并后字典序最小,所以当合并后 ...
                            
                            
                                分类:
其他好文   时间:
2017-06-01 19:33:53   
                                阅读次数:
156
                             
                    
                        
                            
                            
                                    最长公共子序列(LCS)问题 下面通过一个具体的例子来学习动态规划方法 —— 最长公共子序列问题。 最长公共子串(Longest Common Substring)与最长公共子序列(Longest Common Subsequence)的区别: 子串要求在原字符串中是连续的,而子序列则只需保持相对顺 ...
                            
                            
                                分类:
其他好文   时间:
2017-05-30 15:50:19   
                                阅读次数:
203
                             
                    
                        
                            
                            
                                题目大意: 求出这些DNA序列中的最长且字典序最小的公共子串。 思路分析: 二分长度的答案,去height中扫描这个长度是否满足,一旦满足就立即输出。这样就能够保证字典序最小了。 #include <cstdio> #include <iostream> #include <cstring> #in ...
                            
                            
                                分类:
编程语言   时间:
2017-05-21 10:56:24   
                                阅读次数:
150