首页 > 代码库 > KMP
KMP
KMP
搞两个链接:11111和22222。都讲的特别清晰易懂。
再来个洛谷模板题的链接
最后是代码:
1 #include<cstdio> 2 #include<cstring> 3 int lenT,lenP,k; 4 int next[1001]; 5 char T[1000001],P[1001]; 6 void make_next(){ 7 for(int i=1;i<lenP;i++){ 8 while(k&&P[i]!=P[k]) 9 k=next[k-1]; 10 if(P[i]==P[k]) 11 k++; 12 next[i]=k; 13 } 14 } 15 int kmp(){ 16 k=0; 17 for(int i=0;i<lenT;i++){ 18 while(k&&P[k]!=T[i]) 19 k=next[k-1]; 20 if(P[k]==T[i]) 21 k++; 22 if(k==lenP) 23 printf("%d\n",i-lenP+2); 24 } 25 } 26 int main(){ 27 scanf("%s",T); 28 scanf("%s",P); 29 lenT=strlen(T); 30 lenP=strlen(P); 31 make_next(); 32 kmp(); 33 for(int i=0;i<lenP;i++) 34 printf("%d ",next[i]); 35 return 0; 36 }
完了
KMP
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。