您的位置:首页 > 其它

kmp算法总结

2011-03-31 19:05 232 查看
正如matrix67大神说的,kmp算法没有讲的必要。而我觉得kmp是一种工具,只要知道会用就可以,比如poj 3461,要想好好理解,可以看matrix67的文章。kmp的预处理函数还是有一些用处的,poj1961 2406 2752都用到了。

贴一下kmp算法的模板:

void preprocess(int m)
{
p[1]=0;
int j=0,i;
for(i=2;i<=m;i++)
{
while(j>0&&b[j+1]!=b[i])
j=p[j];
if(b[j+1]==b[i])
j++;
p[i]=j;
}
return ;
}
int kmp(int n,int m)
{
int j=0,i,k=0;
for(i=1;i<=n;i++)
{
while(b[j+1]!=a[i]&&j>0)
j=p[j];
if(b[j+1]==a[i])
j++;
if(j==m)
{
k++;
j=p[j];
}
}
return k;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: