zoukankan      html  css  js  c++  java
  • kmp

     1 #include<iostream>
     2 #include<string>
     3 #include<cstring>
     4 using namespace std;
     5 
     6 void kmp_pre(char x[], int m, int Next[])
     7 {
     8     int i, j;
     9     j = Next[0] = -1;
    10     i = 0;
    11     while (i < m)
    12     {
    13         int mark1=j,mark2=j;
    14         while (-1 != j && x[i] != x[j]) mark1=j,j = Next[j],mark2 = j;
    15         Next[++i] = ++j;
    16         cout << "(" << i <<","<< mark1<<" " <<mark2 << " " << j << ")";
    17     }
    18     cout << endl;
    19 }
    20 int Next[10010];
    21 int KMP_Count(char x[], int m, char y[], int n)
    22 {
    23     int i, j;
    24     int ans = 0;
    25     kmp_pre(x, m, Next);
    26     for (int i = 0; i < m+1; i++)
    27         cout << Next[i]<<" ";
    28     cout << endl;
    29     i = j = 0;
    30     while (i < n)
    31     {
    32         while (-1 != j && y[i] != x[j]) j = Next[j];
    33         i++; j++;
    34         if (j >= m)
    35         {
    36             ans++;
    37             j = Next[j];
    38         }
    39     }
    40     return ans;
    41 }
    42 int main()
    43 {
    44     char a[100], b[100];
    45     cin >> a >> b;
    46     int lena = strlen(a), lenb = strlen(b);
    47     cout << KMP_Count(a, lena, b, lenb) << endl;
    48     return 0;
    49 }
  • 相关阅读:
    mybatis逆向工程
    fastdfs搭建和使用
    solr学习笔记
    自己搭建anki服务器
    redis总结
    java基础——队列
    遍历文件夹下的文件,并且获取文件名字
    xls到xml
    xls文件导入数据库
    PyCharm怎样添加Qt designer
  • 原文地址:https://www.cnblogs.com/kangdong/p/9332545.html
Copyright © 2011-2022 走看看