学习总结:KMP算法

来源:互联网 发布:王蕙玲编剧知乎 编辑:程序博客网 时间:2024/05/17 03:22

这里贴一段模板

#include <bits/stdc++.h>using namespace std;#define M 100005struct KMP{    int n,m,sz;    int ans[M];    int fail[M];    int a[M],s[M];    void Fail(){//a为子串,长度为m,s为母串长度为n          fail[1]=0;        fail[2]=1;        for(int i=2,j;i<=m;i++){            j=fail[i];            while(j&&a[i]!=a[j])j=fail[j];            fail[i+1]=j+1;        }    }    void Match(){        for(int i=1,j=1;i<=n;i++){            while(j&&s[i]!=a[j])j=fail[j];            j++;            if(j==m+1){                ans[++sz]=i-m+1;                j=fail[j];            }        }    }}KMP;
原创粉丝点击