zoukankan      html  css  js  c++  java
  • POJ 3461 Oulipo(KMP)

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 using namespace std;
     5 char W[10005], T[1000005];
     6 int next[10005];
     7 void getfail(char *w, int len){  //失配,求得next[]数组,下标从0到len
     8     int i, j;
     9     next[0] = -1; i = 0; j = -1;
    10     while(i < len){
    11         if(j == -1 || w[i] == w[j]){
    12             i++; j++; next[i] = j;
    13         }else
    14             j = next[j];
    15     }
    16 }
    17 
    18 int KMPMatch(char *w, char *t){
    19     int len1, len2, i,j, ans;
    20     i = j = ans = 0;
    21     len1 = strlen(w);
    22     len2 = strlen(t);
    23     getfail(w, len1);
    24     while(i < len2){
    25         //cout<<i<<"--"<<j<<endl;
    26         if(j == -1 || t[i] == w[j]){
    27             i++; j++;
    28         }else
    29             j = next[j];
    30         if(j == len1) ans++;
    31     }
    32     return ans;
    33 }
    34 
    35 int main(){
    36     int t;
    37     scanf("%d",&t);
    38     while(t--){
    39         scanf("%s%s", W, T);
    40         printf("%d
    ", KMPMatch(W, T));
    41     }
    42     return 0;
    43 }
  • 相关阅读:
    BZOJ 3330 分数
    FR #11题解
    BZOJ 1857 传送带
    BZOJ 4757 Building a Tall Barn
    FR #10题解
    BZOJ 4393 Fruit Feast
    BZOJ 3126 Photo
    BZOJ 1312 Hard Life
    BZOJ 2039 employ人员雇佣
    Count SIN Numbers
  • 原文地址:https://www.cnblogs.com/yaling/p/3220695.html
Copyright © 2011-2022 走看看