摘要: 题意:给定一个长度为n的字符串,求它每个前缀的最短循环节分析:KMP的失配函数有一个特点,i表示前i个字符,若i%(i-f[i])==0,则前i个字符,最短循环节的长度为i-f[i]。。// File Name: 1328.cpp// Author: zlbing// Created Time: 2013/3/17 19:22:33#include<iostream>#include<string>#include<algorithm>#include<cstdlib>#include<cstdio>#include<set&g 阅读全文
posted @ 2013-03-17 20:05 z.arbitrary 阅读(175) 评论(0) 推荐(0) 编辑
摘要: //f[i+1]是求与p[i]的下一个匹配的后一个数的下标int f[MAXN];void getFail(char *p,int *f){ int m=strlen(p); f[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]=p[i]==p[j]?j+1:0; }}void find(char *T,char *p,int *f){ int n=strlen(T); int m=strlen(p); ... 阅读全文
posted @ 2013-03-17 19:54 z.arbitrary 阅读(154) 评论(0) 推荐(0) 编辑