zoukankan      html  css  js  c++  java
  • KMP模板

    好久不写KMP了。重打一遍竟然wa了。。。

    代码:

    #include<cstdio>
    #include<cstring>
    char a[1000050],b[1000050];
    int la,lb,nxt[1000050];
    void get_nxt()
    {
        int j = 1,k = 0;
        while(j<=lb)
        {
            if(!k||b[j]==b[k])nxt[++j]=++k;
            else k=nxt[k];
        }
    }
    void kmp()
    {
        int j = 0,k = 0;
        while(j<=la)
        {
            if(!k||a[j]==b[k])j++,k++;
            else k=nxt[k];
            if(k==lb+1)printf("%d
    ",j-k+1),k=nxt[k];
        }
        for(int i=2;i<=lb+1;i++)
        {
            printf("%d ",nxt[i]-1);
        }
        printf("
    ");
    }
    int main()
    {
        scanf("%s%s",a+1,b+1);
        la = strlen(a+1);
        lb = strlen(b+1);
        get_nxt();
        kmp();
        return 0;
    }
  • 相关阅读:
    SQL Server 存储过程
    String.format Tutorial
    第五次
    第四次
    第三次
    第一次作业
    第二次
    c/c++
    HelloWorld出现的问题
    Android系统架构
  • 原文地址:https://www.cnblogs.com/LiGuanlin1124/p/9649977.html
Copyright © 2011-2022 走看看