社区讨论

玄关求助,疑惑

P3375【模板】KMP参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mhjup150
此快照首次捕获于
2025/11/04 08:48
4 个月前
此快照最后确认于
2025/11/04 08:48
4 个月前
查看原帖
为什么这个KMP会挂
CPP
void make()
{
    st = t+'#';
    st = st+s;
    st='@'+st;
    len=st.size();
    nxt[1]=0;
    for(int i = 2;i<=len;i++)
    {
        int j = nxt[i-1];
        while(j!=0&&st[j]!=st[i]) j=nxt[j-1];
        if(st[j]==st[i]) j++;
        nxt[i]=j;
    }
}
int match()
{
    int ret = 0;
    for(int i = 1;i<=len;i++)
    {
        if(nxt[i]==m)
        {
            //i-m+1-m-1
            ret++;
        }
    }
    return ret;
}
但是只要注释掉
CPP
st='@'+st;
就过了???? 为什么,有没有大佬解释一下

回复

1 条回复,欢迎继续交流。

正在加载回复...