有人对next函数的递推算法只是处于会敲的状态但是却不理解,下面我来解释一下next函数递推算法的原理
在讲next函数递推算法的之前我们先回顾一下kmp算法的总体
int kmp(char *t char *p)//t是主传,p是匹配串
{
i=1 ; j=1 ;
while( i<=strlen(t)&&j<=strlen(p) )
{
if( j==0 || t[ i ]==p[ j ] ){ i++; j++; }//如果相等或者j=0就令指针向前进一个,否则就利用next函数来返回字母继续与之比较
else j =next[ j ];
}
if( i>strlen(p) )
return i - strlen(p) ;
else return 0;
}
如果你想问,为什么要这么求,解释一下,next 函数值是有意义的,他是代表最大的前缀等于最大后缀,这样求出之后,就可以遍历所有解的可能,你