模板

模板题:hdu1711 Number Sequence
    hdu1686 Oulipo

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

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

void match(){
    for(int i=1,j=0;i<=n;i++){
        while(j && s[i]!=p[j+1]) j=fail[j];
        if(s[i]==p[j+1]) j++;
        if(j==m){
            j=fail[j];
            //匹配成功之后的操作
        }
    }
}
posted @ 2020-06-28 16:03  fxq1304  阅读(104)  评论(0编辑  收藏  举报