dp[i][j] 表示长度为 i 的前缀到达第 j 个节点的最小更改数目。
很显然有dp[0][0] = 0;
dp[ i ][ j ] = min(dp[ i ][ j ],dp[i-1][k] + (j == k ? 0 : 1)),当且仅当j,k满足下列条件时。
j 不为某条模式串的末节点 且 j 到 root 的由失败指针组成的路径上无末节点。
j 是k的儿子节点 或者 j 的父节...
分类:
其他好文 时间:
2014-08-17 20:00:12
阅读次数:
292
KMP KMP算法主要用于字符串匹配中的单串匹配 next函数:表示当前字符失配时,应从模式串的第几位开始匹配(越大越好)。即模式串的前缀与以t[i]为结尾的后缀的最长相同部分的长度。 代码如下(pascal) var s,t:string; next,ans:array[0..100] of lo...
分类:
其他好文 时间:
2014-08-17 12:55:12
阅读次数:
234
又一次突然遇到用python处理modbus通信而需要crc16校验的问题,当时在百度上没找到,在google上找到了一个外国人开发的python包,结果安装好了之后发现校验的不正确(可能是使用的模式串不一样,xcrc16的模式串为...
分类:
编程语言 时间:
2014-08-15 23:53:49
阅读次数:
622
hdu 4878 ZCC loves words(AC自动机+dp+矩阵快速幂+中国剩余定理)
题意:给出若干个模式串,总长度不超过40,对于某一个字符串,它有一个价值,对于这个价值的计算方法是这样的,设初始价值为V=1,假如这个串能匹配第k个模式串,则V=V*prime[k]*(i+len[k]),其中prime[k]表示第k个素数,i表示匹配的结束位置,len[k]表示第k个模式串的长度(注...
分类:
其他好文 时间:
2014-08-14 20:37:19
阅读次数:
359
最近回顾了下字符串匹配 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
?Problem A SPOJ SUB_PROB AC自动机?题意: 给定一个长为M(M≤100000 )的文本串,和N(N≤1000)个长度不超过2000的模式串,问每个模式串是否在文本串中出现过??几乎和周一课件上的第一个例题一模一样。。?把文本串丢到AC自动机里面去跑。?注意:?1.可能有两个...
分类:
其他好文 时间:
2014-08-09 13:11:07
阅读次数:
381
KMP算法是快速字符串匹配算法,朴素的暴力算法的时间复杂度为O(n*m),而KMP通过对模式串进行相应的处理,能够达到O(m+n)的速度。
我们知道在字符串匹配的时候最消耗时间的就是当匹配到第 i 个位置发现不匹配时,下一次又对模式串进行一次重新匹配,那么假如模式串中有很多相同的字母的话,这样做了很多重复的事情,那么我可以对模式串进行一定的处理,处理处一个对应的数组,让他保存假如这里不匹配是我下...
分类:
其他好文 时间:
2014-08-05 09:37:19
阅读次数:
172
学习kmp算法我最后是看的数据结构书上的一本教材学会的。。我觉得kmp相对于普通的BF算法就是避免了很多不必要的匹配,而kmp算法的精髓自然就在于next数组的运用。。。而next数组简而言之就是存储的就是模式串中第j个字符与主串中相应字符“失配”时,在模式串中需要重新和主串中失配的字符相比较的位置。。。我觉得这句概括挺好的。。。
题1:
hdu 1711 number sequen...
分类:
其他好文 时间:
2014-08-04 14:34:27
阅读次数:
277
uva 1449 - Dominating Patterns
题目链接
题意:给定一些模式串,再给一个文本,求这些模式串在文本中出现次数最多的串
思路:AC自动机的模板题目,注意字符串重复的处理
代码:
#include
#include
#include
#include
#include
#include
using namespace std;
c...
分类:
其他好文 时间:
2014-08-01 23:19:32
阅读次数:
326
UVA 11468 - Substring
题目链接
题意:给定一些模式串,然后给出一些字母出现的概率,每次随机出现一个字母,要求出这些字母出现L个组成的字符串不包含(即不是它的连续字串)已有模式串的概率
思路:AC自动机,先构造出AC自动机,构造的时候利用next数组的特性,记录下每个位置是否有经过一个单词结点,如果有这个结点就是不能走的结点,那么问题就变成了只能在能走的结点上...
分类:
其他好文 时间:
2014-08-01 23:08:22
阅读次数:
275