模板
模板题: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];
            //匹配成功之后的操作
        }
    }
}

                
            
        
浙公网安备 33010602011771号