【KMP 模板】

----------------------------

一 模板

----------------------------

const int maxn=1111111
char s[maxn];
char p[maxn];
int next[maxn];
void getnext(char *p,int *next){
    int i=0,j=-1;
    int len=strlen(p);
    next[0]=-1;
    while(i<len){
        if(j==-1 || p[i]==p[j]){
            i++;
            j++;
            next[i]=j;
        }
        else
            j=next[j];
    }
}
void kmp(char *s,char *p,int *next){
    int i=0,j=0;
    int n=strlen(s);
    int m=strlen(p);
    getnext(p,next);
    while(i<n){
        if(j==-1 || s[i]==p[j]){
            i++;
            j++;
        }
        else
            j=next[j];
        if(j==m){
            //To DO
            // ans++;
            j=next[j];
        }
    }
}




阅读更多
个人分类: 【ACM 算法】
上一篇【POJ 2406 】
下一篇【POJ 1961】
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭