zoukankan      html  css  js  c++  java
  • KMP算法

    http://acm.zjnu.edu.cn/DataStruct/showproblem?problem_id=1005

    题解:kmp模板题。

    如何理解kmp?

    背下来就好了

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<string>
    #include<string.h>
    #include<stack>
    #include<iostream>
    using namespace std;
    const int maxn = 1e5 + 5;
    char t[maxn];
    char p[maxn];
    int tlen, plen;
    int k[maxn];
    bool kmp() {
        int i = 1,j = 0;
        while (i < plen) {
            if (p[i] == p[j])k[i] = j+1, i++, j++;
            else {
                if (j == 0)k[i] = 0,i++;
                else j = k[j - 1];
            }
        }//k数组更新
        i = 0, j = 0;
        
        while (j < plen&&i < tlen) {
            if (t[i] == p[j])i++, j++;
            else {
                if (j == 0)i++;
                 else j = k[j - 1];
            }
        }
        if (j == plen)return 1;
        else return 0;
    
    }
    
    int main() {
        scanf("%s", t);
         tlen = strlen(t);
        int n;
        cin >> n;
        while (n--) {
            scanf("%s", p);
             plen = strlen(p);
            if (kmp())puts("yes");
            else puts("no");
        }
        cin >> n;
    }
    /*
    abxabcabcaby
    1
    abcaby
    */
    成功的路并不拥挤,因为大部分人都在颓(笑)
  • 相关阅读:
    作业01
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
    C语言II博客作业04
    C语言II—作业03
    C语言II博客作业02
    C语言II博客作业01
  • 原文地址:https://www.cnblogs.com/SuuT/p/8886264.html
Copyright © 2011-2022 走看看