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)的主要内容,如果未能解决你的问题,请参考以下文章

hdu 1686 Oulipo kmp

洛谷 P3375 模板KMP字符串匹配 || HDU 1686 Oulipo || kmp

kuangbin专题十六 KMP&&扩展KMP HDU1686 Oulipo

HDU 1686 Oulipo

[kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher B - Oulipo HDU - 1686(kmp)

B - Oulipo HDU-1686