1. 程式人生 > >POJ 3461 Oulipo

POJ 3461 Oulipo

ipo poj next ans CA tdi end clas class

KMP模板題

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char a[1000086],b[1000086];
int Next[1000086];
int main()
{
    int T;
    int la,lb;

    scanf("%d",&T);

    while(T--){
        scanf("%s %s",a,b);
        la=strlen(a);
        lb=strlen(b);
        int
j,k; j=0;k=-1;Next[0]=-1; while(j<la){ if(k==-1||a[j]==a[k]){ j++; k++; Next[j]=k; } else{ k=Next[k]; } } int ans=0; j=0;k=0; while(k<lb){
if(j==-1||a[j]==b[k]){ j++;k++; } else{ j=Next[j]; } if(j==la){ j=Next[j];ans++; } } cout<<ans<<endl; } }

POJ 3461 Oulipo