社区讨论
玄关求助,疑惑
P3375【模板】KMP参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhjup150
- 此快照首次捕获于
- 2025/11/04 08:48 4 个月前
- 此快照最后确认于
- 2025/11/04 08:48 4 个月前
为什么这个KMP会挂
CPPvoid 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;
}
但是只要注释掉
CPPst='@'+st;
就过了????
为什么,有没有大佬解释一下
回复
共 1 条回复,欢迎继续交流。
正在加载回复...