kmp
码不停Tick
这个作者很懒,什么都没留下…
展开
-
1961 2406 poj 求字符串的最小循环子串
#include #include #include using namespace std; const int maxn=1000000+50; char str[maxn],P[maxn]; int casenum=0,next[maxn],num,n; void makeNext(const char P[],int next[]) { int q,k; int m=st原创 2017-07-31 00:03:26 · 1535 阅读 · 0 评论 -
poj 2752 (summerIII seek the name,seek the fame)
这道题真的加深了我对next数组的理解,。没想除了用在KMP上还能有这种操作。。。开始想着用其中的K的值做,因为根据定义,k代表的是最长相同的前后缀长度。。。然后不知道为什么WA。。。。后来百度了一下别人的做法恍然大悟,觉得精妙无比。就是通过递归next数组然后求得前后缀的长度。 以下为链接点击打开链接 AC代码: #include #include #include #in原创 2017-08-02 00:28:32 · 280 阅读 · 0 评论 -
POJ2185 (summer III N)
#include #include char s[10010][80]; int next[10010]; int main() { int i,j,x,y,r,c,f[80]; char a[80]; scanf("%d%d",&r,&c); for(i=0;i<c;i++)f[i]=0;转载 2017-08-03 10:35:28 · 315 阅读 · 0 评论 -
kmp总结
kmp的算法详情可以参考《算法导论》,代码可以参考刘汝佳的紫书(写的很好,基本和算导的伪代码对应),这里只做一些习题的题解报告。 基本题:hdu1005 #include #include #include using namespace std; const int maxn=1e6+50; int t,n,m,a[maxn],b[maxn],f[maxn]; void getFail(i原创 2018-02-07 23:43:52 · 238 阅读 · 0 评论