【练习03】 KMP
文章平均质量分 72
liuzhushiqiang
这个作者很懒,什么都没留下…
展开
-
【练习03】 KMP 1001 Number Sequence
很纯正的KMP,模板函数只需做很小的改动,只是把char *P, char *T换成int* P和int* T。//模板开始#include #include #include #include #include #include #include #include #include #include #includ原创 2013-05-17 16:48:19 · 664 阅读 · 0 评论 -
【练习03】 KMP 1002 Oulipo
只要把查找函数改一下就好了,当找到匹配即j==m的时候不要打印,而是count++;j = f[j];continue;这三句的含义是把count更新完后,把当前的匹配当做失配处理,再沿着失配边继续寻找“下一个匹配”。//模板开始#include #include #include #include #include #include原创 2013-05-21 19:28:44 · 541 阅读 · 0 评论 -
【练习03】 KMP 1005 剪花布条
简单的KMP。//模板开始#include #include #include #include #include #include #include #include #include #include #include #include #include#define SZ(x) (int(x.s原创 2013-05-21 21:34:28 · 536 阅读 · 0 评论 -
【练习03】 KMP 1004 Period
kmp,依次求字符串前缀的最小循环节, AC耗时500ms,但是在statistic里看到有人50msAC,可能原因:1.输入输出的优化2.用了更神奇的算法。//模板开始#include #include #include #include #include #include #include #include #i原创 2013-06-21 16:28:53 · 524 阅读 · 0 评论 -
【练习03】 KMP 1006 Count the string
如果枚举所有前缀并且调用find函数会超时,但是我们思考一下就能发现只要遍历数组f,当f的值非0,count就加1(包括f[n]),最后加上字符串长度n就是最终的结果。(仔细理解)最后还要注意的是题目要求输出mod 10007.//模板开始#include #include #include #include #include #include原创 2013-06-21 21:00:31 · 636 阅读 · 0 评论 -
KMP算法模板
来自于刘汝佳的”信息学竞赛系列丛书”。void getFail(char* P, int* f){ int m = strlen(P); f[0] = 0; f[1] = 0; for(int i = 1; i < m; i++) { int j = f[i]; while(j && P[i] != P[j]) { j = f[j]; } f[i + 1]转载 2013-05-17 17:10:59 · 4187 阅读 · 0 评论 -
KMP算法详解
如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。 我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm matrix67",字符串B="matrix",我们就说B是A的子串。你可以委婉地问你的MM:“转载 2013-05-16 17:04:43 · 562 阅读 · 0 评论 -
【练习03】 KMP 1003 Cyclic Nacklace
未完待续原创 2013-07-27 20:16:41 · 623 阅读 · 0 评论 -
KMP和扩展KMP
KMP:给出两个字符串A(称为模板串)和B(称为子串),长度分别为lenA和lenB,要求在线性时间内,对于每个A[i](0【算法】设next[i]为满足B[i-z+1..i]==B[0..z-1]的最大的z值(也就是B的自身匹配)。设目前next[0..lenB-1]与ex[0..i-1]均已求出,要用它们来求ex[i]的值。根据ex的定义,有A[i-1-ex[i-1]+1..i-1转载 2013-07-22 16:37:10 · 517 阅读 · 0 评论