hdu 1686 Oulipo

来源:互联网 发布:淘宝商家支付宝限额 编辑:程序博客网 时间:2024/05/21 06:34

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int n,p[10010],l1,l2;char s1[10010],s2[1000100];void getp(){    int i,j=-1;    p[0]=-1;    for(i=1;i<l1;i++)    {        while(j>=0&&s1[i]!=s1[j+1])  j=p[j];        if(s1[i]==s1[j+1])  j++;        p[i]=j;    }}void kmp(){    int i=0,j=-1,ans=0;    while(i<l2)    {        while(j>=0&&s2[i]!=s1[j+1]) j=p[j];        if(s2[i]==s1[j+1])  j++;        if(j==l1-1)        {            ans++;j=p[j];        }         i++;    }    printf("%d\n",ans);}int main(){    scanf("%d",&n);    while(n--)    {        scanf("%s%s",s1,s2);        l1=strlen(s1);        l2=strlen(s2);        getp();        kmp();    }    return 0;}

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1686


原创粉丝点击