POJ_3461-Oulipo

来源:互联网 发布:python源代码 编辑:程序博客网 时间:2024/06/06 00:50

//没啥好说的,KMP模板题

AC代码:

#include<stdio.h>#include<string.h>#define max 1000005char s[max];char t[max];int len1;int len2;int next[max];int sum;void get_next(){    int i=0;    int j=-1;    next[0]=-1;    while(i<len2)    {        if(j==-1||t[i]==t[j])        {            i++;            j++;            next[i]=j;        }        else        {            j=next[j];        }    }}void kmp(){    int i=0;    int j=0;    while(i<len1)    {        if(j==-1||s[i]==t[j])        {            i++;            j++;        }        else        {            j=next[j];        }        if(j==len2)        {            sum++;        }    }}int main(){    int x;    scanf("%d",&x);    while(x--)    {        scanf("%s%s",t,s);        len1=strlen(s);        len2=strlen(t);        memset(next,0,sizeof(next));        sum=0;        get_next();        kmp();        printf("%d\n",sum);    }    return 0;}

0 0