摘要:
给出一个字符串A,求A有多少个前缀同时也是后缀,从小到大输出这些前缀的长度分析:KMP对于长度为len的字符串,由next的定义知:A[0]A[1]...A[next[len]-1]=A[len-next[len]]...A[len-1]此时A[0]A[1]...A[next[len]-1]为一个符合条件的前缀有A[0]A[1]....A[next[next[len]]-1]=A[len-next[next[len]-next[next[len]]]...A[next[len]-1],故A[0]A[1]....A[next[next[len]]-1]也是一个符合条件的前缀故从len=>n 阅读全文
posted @ 2012-08-01 16:55
找回失去的
阅读(201)
评论(0)
推荐(1)
摘要:
用KMP求循环节。/*Accepted 5288K 110MS G++ 712B 2012-08-01 16:03:19*/#include<stdio.h>#include<string.h>#include<stdlib.h>const int MAXN = 1 << 20;char t[MAXN];int next[MAXN], len;void Make_Next(){ int i = 0, j = -1; next[0] = -1; len = strlen(t); while(i < len) { if(-1... 阅读全文
posted @ 2012-08-01 16:10
找回失去的
阅读(203)
评论(0)
推荐(0)
摘要:
字符串模式匹配,KMP算法相当高效,O(n+m)。关键在求出模式串的next数组,求完这个,一些基本的题应该都是没有问题了的,文本串只要扫描一次。求模式串在文本中出现的次数,当匹配模式串的最后一个字符时,就说明出现了一次。/*Accepted 1192K 94MS C++ 987B 2012-08-01 09:21:25*/#include<stdio.h>#include<string.h>#include<stdlib.h>const int MAXT = 1000100;const int MAXW = 10010;char T[MAXT], W[MA 阅读全文
posted @ 2012-08-01 09:29
找回失去的
阅读(267)
评论(0)
推荐(0)
浙公网安备 33010602011771号