实现思路:对全部输入或者部分做预处理,得到额外信息从而帮助提升算法效率例子:模式匹配/* * 模式匹配 * 直接思路: * 时空权衡法:对模式串进行预处理,构造出额外的移动信息表 */void makeTable(string pattern, char* table) { // t...
分类:
其他好文 时间:
2015-07-28 10:39:03
阅读次数:
134
void get_next(SString T, int next[]){//求模式串T的next函数值并存入数组next
int i = 1, j = 0;
next[1] = 0;//T的第1个字符与主串“失配”时,主串的下一字符与T的第1个字符比较
while (i 1时,next[2] = 1
if (j == 0 |...
分类:
其他好文 时间:
2015-07-27 20:59:28
阅读次数:
123
后缀数组是一个处理字符串的有力工具,基本用途有模式串匹配和后缀最长公共前缀;例题
【JSOI 2007】【BZOJ 1031】字符加密ciper
后缀数组的躶体,现将字符串复制成环,然后输出sa[i]<lensa[i] \lt len的s[sa[i]?1]s[sa[i]-1]即可,code:#include
#include
#include<cstrin...
分类:
编程语言 时间:
2015-07-25 18:34:37
阅读次数:
141
有了KMP和Trie的基础,就可以学习神奇的AC自动机了。AC自动机其实就是在Trie树上实现KMP,可以完成多模式串的匹配。 AC自动机 其实 就是创建了一个状态的转移图,思想很重要。 推荐的学习链接:http://acm.uestc.edu.cn/bbs/read.php?t...
分类:
其他好文 时间:
2015-07-23 19:29:50
阅读次数:
126
题意:给你两个串,问你第二个串是从第一个串的什么位置开始完全匹配的? kmp裸题,复杂度O(n+m)。
当一个字符串以0为起始下标时,next[i]可以描述为"不为自身的最大首尾重复子串长度"。
当发生失配的情况下,j的新值next[j]取决于模式串中T[0 ~ j-1]中前缀和后缀相等部分的长度, 并且next[j]恰好等于这个最大长度。
防止超时,注意一些细节。。
另外:尽量少用str...
分类:
编程语言 时间:
2015-07-23 00:46:22
阅读次数:
141
BM 算法是一个较优的模式匹配算法。一般,如果不考虑模式串的长度,一个具有时间复杂度O(n)的算法应该是最优的了,但是事实不是如此。BM算法可以实现更高效率的模式匹配。分析和实验说明,BM匹配算法对于那些字符集比较大,而模式串中出现的字符比较少的时候,工作效率最快。而且,考虑KMP匹配方式的优化,可...
分类:
编程语言 时间:
2015-07-22 22:31:06
阅读次数:
178
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3065思路分析:问题需要模式匹配多个模式串,需要注意的是模式串会包含和重叠,需要对AC自动机的匹配过程进行修改,对于每个节点,需要从该节点的失败指针回溯,如果失败指针回溯后的节点为某个模式串的最后一个节...
分类:
其他好文 时间:
2015-07-22 01:35:23
阅读次数:
150
next数组用于存储模式串中元素为j位置的最大重叠度。//KMP算法实现字符串匹配 //#include #include using namespace std; void compute_next(int* next,char const*p,int len){ int j=0; ...
分类:
编程语言 时间:
2015-07-20 20:57:34
阅读次数:
150
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087题意:求模式串在主串中出现的次数,与模式串匹配的子串之间不可重叠。思路:用kmp算法解决,在匹配更新结果后,重新定位模式串时,不可用j = next[j],应该直接让j定位到模式串开头。code: ...
分类:
其他好文 时间:
2015-07-19 16:22:29
阅读次数:
128
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。
KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。即确定下一次应该从那个位置重新开始匹配。
char*obj = "cbcba";
char*src = "sdcbcbcb...
分类:
编程语言 时间:
2015-07-11 09:19:17
阅读次数:
250