hdu 1686 Oulipo

来源:互联网 发布:php 去除井号 编辑:程序博客网 时间:2024/04/29 14:13

http://acm.hdu.edu.cn/showproblem.php?pid=1686
简单kmp

#include <cstdio>#include <cstring>using namespace std;int Next[10005];char c[1000005];char t[10005];int main(){    int num;    scanf("%d",&num);    while(num--)    {        scanf("%s%s",t,c);        int i=0,j=-1;        memset(Next,0,sizeof(Next));        Next[0]=-1;        int len = strlen(t);        while(i<len)        {            if(j==-1||t[i]==t[j])            {                i++;j++;                Next[i]=j;            }            else                j=Next[j];        }        j=0;i=0;        int cnt=0;        for(i=0,j=0; i<strlen(c); i++)        {            if(j<len&&c[i]==t[j])                j++;            else            {                while(j>0)                {                    j=Next[j];                    if(c[i]==t[j])                    {                        j++;                        break;                    }                }            }            if(j==len)            {                cnt++;                j = Next[j];            }        }        printf("%d\n",cnt);    }}
0 0