题意:给定N个有A C G T组成的字符串,求长度为L的仅由A C G T组成的字符串中有多少个是不含给定的N个字符串的题解: 首先我们把所有的模式串(给定的DNA序列)建Trie,假定我们有一个匹配串,并且在匹配过程到S[i]这个字符时匹配到了Trie上的某个节点t,那么有两种可能: 匹配失败:t ...
分类:
其他好文 时间:
2017-02-27 23:25:44
阅读次数:
362
比如有模式串 t="aaaab" 那么执行过程是这样的: i=1,j=0,next[1]=0; //初始化i,j的值 [规则1:根据如果j==0或者t[i]=t[j]则i++,j++,否则j=next[j] [规则2:如果t[i]==t[j] next[i]=next[j]否则 next[i]=j] ...
分类:
编程语言 时间:
2017-02-26 14:23:52
阅读次数:
159
数据结构课本上给了这么一段算法求nextval9[]数组 1 int get_nextval(SString T,int &nextval[ ]) 2 { 3 //求模式串T的next函数修正值并存入数组nextval。 4 i=1; nextval[1]=0; j=0; 5 while(i<T[0 ...
分类:
编程语言 时间:
2017-02-13 08:34:15
阅读次数:
238
数据结构课本上给了这么一段算法求nextval9[]数组 1 int get_nextval(SString T,int &nextval[ ]) 2 { 3 //求模式串T的next函数修正值并存入数组nextval。 4 i=1; nextval[1]=0; j=0; 5 while(i<T[0 ...
分类:
编程语言 时间:
2017-01-31 18:32:38
阅读次数:
276
http://acm.hdu.edu.cn/showproblem.php?pid=2087 题意:给定一个文本串和给定一个模式串,求文本串中有几个模式串。匹配成功的串不可以再使用。 思路:题目不难,还是可以直接套用KMP模板。需要注意的就是如果在主串中如果成功匹配了一次,那么模式串应该回到开头,而 ...
分类:
其他好文 时间:
2017-01-30 13:19:54
阅读次数:
212
http://acm.hdu.edu.cn/showproblem.php?pid=1686 题意:给定一个文本串和给定一个模式串,求文本串中有几个模式串。 思路:直接套用KMP模板。 ...
分类:
其他好文 时间:
2017-01-30 12:34:45
阅读次数:
177
鉴于原理有点复杂,详细原理可以参考这篇文章http://blog.csdn.net/v_july_v/article/details/7041827 本文直接从结论入手,应付考试和竞赛足够了。 设T为目标串("aaabbbaabbabcabcabbaba"),pat为模式串("aabbabc")。 ...
分类:
编程语言 时间:
2017-01-24 07:40:28
阅读次数:
238
目的: 为了解决字符串模式匹配 历程: 朴素模式匹配:逐次进行比较 KMP算法:利用匹配失败得到的信息,来最大限度的移动模式串,以此来减少比较次数提高性能 概念: m:是目标串长度 n:是模式串长度 j:某次匹配时,第一次出现的不同的索引位置(有的称为:失配位) k:最长首尾串长度(有的称为:最长公 ...
分类:
编程语言 时间:
2016-12-14 13:49:51
阅读次数:
308
KMP算法是字符串模式匹配当中最经典的算法,原来大二学数据结构的有讲,但是当时只是记住了原理,但不知道代码实现,今天终于是完成了KMP的代码实现。原理KMP的原理其实很简单,给定一个字符串和一个模式串,然后找模式串在给定字符串中的位置。将两个字符串转换为字符数组,然后从两个数组的开始位置"i","j ...
分类:
编程语言 时间:
2016-12-12 22:30:28
阅读次数:
217
题目大意: 有若干模式串,将某些模式串拼接起来(一个可以使用多次)形成一个长模式串,判断能否有两种或更多种不同的拼法拼成相同的模式串。 思路: 神奇的构图,暴力的求解。 可以发现,若有不同的拼法,则一个模式串的前缀要与一个模式串的后缀相同。 因此我们就将问题转化成:从两个模式串开始,不停的按照前缀后 ...
分类:
其他好文 时间:
2016-12-11 15:20:58
阅读次数:
196