hdu1686Oulipo(KMP)
Posted yijiull
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu1686Oulipo(KMP)相关的知识,希望对你有一定的参考价值。
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1686
用KMP查找模式串在目标串中出现的次数。
1 #include<cstdio> 2 #include<cstring> 3 char t[1001010],p[10100]; 4 int nex[10100]; 5 int tlen,plen; 6 int ans; 7 void getnex() 8 { 9 int j=0,k=-1; 10 nex[0]=-1; 11 while(j<plen) 12 { 13 if(k==-1||p[j]==p[k]) 14 nex[++j]=++k; 15 else k=nex[k]; 16 } 17 } 18 19 int KMP() 20 { 21 if(tlen==1&&1==plen) 22 { 23 if(t[0]==p[0]) return 1; 24 else return 0; 25 } 26 getnex(); 27 int i=0,j=0; 28 for(;i<tlen;i++) 29 { 30 while(j>0&&t[i]!=p[j]) 31 j=nex[j]; 32 if(t[i]==p[j]) j++; 33 if(j==plen) 34 { 35 ans++; 36 j=nex[j]; 37 } 38 } 39 return ans; 40 } 41 42 int main() 43 { 44 int tt; 45 scanf("%d",&tt); 46 while(tt--) 47 { 48 scanf("%s%s",p,t); 49 ans=0; 50 tlen=strlen(t); 51 plen=strlen(p); 52 printf("%d\n",KMP()); 53 54 } 55 }
以上是关于hdu1686Oulipo(KMP)的主要内容,如果未能解决你的问题,请参考以下文章
洛谷 P3375 模板KMP字符串匹配 || HDU 1686 Oulipo || kmp
kuangbin专题十六 KMP&&扩展KMP HDU1686 Oulipo
[kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher B - Oulipo HDU - 1686(kmp)