模板

模板题:hdu1711 Number Sequence

//字符串下标从1开始,n表示文本串的长度,m表示模式串的长度
int n,m,NEXT[10010];
char s[1000010],p[10010];

void get_next(){
    for(int i=2,j=0;i<=m;i++){
        while(j && p[i]!=p[j+1]) j=NEXT[j];
        if(p[i]==p[j+1]) j++;
        NEXT[i]=j;
    }
}

void match(){
    for(int i=1,j=0;i<=n;i++){
        while(j && s[i]!=p[j+1]) j=NEXT[j];
        if(s[i]==p[j+1]) j++;
        if(j==m){
            j=NEXT[j];
            //匹配成功之后的操作
        }
    }
}
原文地址:https://www.cnblogs.com/fxq1304/p/13203267.html