码迷,mamicode.com
首页 >  
搜索关键字:next数组    ( 480个结果
模式匹配 KMP算法
/* * KMP 模式匹配算法 */ #include #include using namespace std; /* * 计算模式串的next数组 * 模式串既做主串,又做模式串,进行匹配 * 时间复杂度为O(m),m为模式串的长度 */ void countNext(char* strPattern, int len, int* next) { int i = 0, j...
分类:其他好文   时间:2014-08-25 17:01:04    阅读次数:214
UVA 1358 - Generator(dp+高斯消元+KMP)
UVA 1358 - Generator 题目链接 题意:有m种字符(从'A'开始往后数的大写字母),现在有一个字符串,长度不超过12,现在每次随机生成一个字母,要求能产生该字符串的期望长度 思路:dp[i]表示产生长度i的期望长度,那么每次产生一个字符,对应m种转移,每种转移的概率为1/m,转移后的长度可以利用KMP的next数组去快速获得,然后由于转移可能形成环的情况,所以无...
分类:其他好文   时间:2014-08-23 12:45:10    阅读次数:276
HDU 2896 病毒侵袭(AC自动机模版题)
AC自动模版题,中文题目就不叙述题意了啊。 AC自动主要是构造出字典树之后找到fail指针的跳转,类似于KMP里面的next数组的跳转啊,注意这里是多模式跳转。意思就是这个串跳到下一个串的什么位置啊。 先帖一下,做多了再一起总结吧。 病毒侵袭 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...
分类:其他好文   时间:2014-08-22 22:36:57    阅读次数:248
HDU 3336 Count the string
题解:利用next数组来保存前缀位置,递推求解。#include #include char pat[200005];int next[200005],M,f[200005];const int MOD=10007;int getnext(){ int i=1,j=0;next[1]=0; ...
分类:其他好文   时间:2014-08-22 12:20:16    阅读次数:201
POJ 2185 二维KMP
题意:就是让你求出最小的字符矩阵面积,这个矩阵是这个大矩阵里能够循环的,但是并不一定是全部循环相同的,部分相同也算循环,比如样例。 思路:这题挺好的,以前没有想到二维字符串数组也可以用next数组求出其循环节,现在这题正好补了这个空。 解法:把每一个字符串当做字符进行求next数组,然后求出最小的循环字符串长度,即:len-next[len]。因为以前求循环节是len/(len-next[le...
分类:其他好文   时间:2014-08-20 16:30:12    阅读次数:212
KMP 总结
再次回来总结KMP,发现有点力不从心,学久了,越觉得越来越不理解了。估计是写KMP已经不下50遍了吧。每次用都是直接默写。。KMP算法,串模式匹配算法,通过预处理得到next数组,再进行匹配。几个要重点记忆的地方:1. next数组的含义 next[i] = t 表示以i位置结尾的前缀串(相对于原串...
分类:其他好文   时间:2014-08-19 00:56:23    阅读次数:213
NOI2014 DAY2 题解
当天下午3点拿到jcvb现场发来的数据,本地自测100+100+30=230。BUAA成绩60+60+30=150。sad story~动物园 zoo既是它的后缀同时又是它的前缀,并且该后缀与该前缀不重叠,将这种字符串的数量记作num[i]。偌大的提示:kmp! 思路很简单,求出next数组,你会发...
分类:其他好文   时间:2014-08-16 18:30:20    阅读次数:469
spoj1811 Longest Common Substring,后缀自动机
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
POJ 2752 Seek the Name, Seek the Fame
题目大意:给你一个字符串,让你找出这个字符串中有多少满足下列条件的字串:该字串既是母串的前缀,也是字串的后缀。         解题思路:此题着重考察对KMP 算法中的Next 数组的理解。 代码如下: #include #include #include #include #include #include using namespace std ; const int MAXN = 40...
分类:其他好文   时间:2014-08-14 23:54:56    阅读次数:250
算法学习笔记 KMP算法之 next 数组详解
最近回顾了下字符串匹配 KMP 算法,相对于朴素匹配算法,KMP算法核心改进就在于:待匹配串指针 i 不发生回溯,模式串指针 j 跳转到 next[j],即变为了 j = next[j]. 由此时间复杂度由朴素匹配的 O(m*n) 降到了 O(m+n), 其中模式串长度 m, 待匹配文本串长 n.其中,比较难理解的地方就是 next 数组的求法。...
分类:其他好文   时间:2014-08-14 01:35:27    阅读次数:336
480条   上一页 1 ... 42 43 44 45 46 ... 48 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!