kmp 算法 理解
我晕了,其中的逻辑没理解,从里面转不出来,不知为啥
为防止遗忘,记忆
函数值的计算,见百度
#include <stdio.h>
void kmp(char *p,int next[])
{
int i;
int j=0;
int k=-1;
next[0]=-1;
while(p[j]!='\0')
{
if(k==-1||p[j]==p[k])
{
j++;
k++;
if(p[j]!=p[k])
next[j]=k;
else
next[j]=next[k];
}else
{
k=next[k];
}
}
for(i=0;i<j;i++)
printf("%d ",next[i]);
printf("\n");
}
int main()
{
char str[10]={'a','b','c','a','c'};
int n[10];
kmp(str,n);
return 0;
}

浙公网安备 33010602011771号