#include?<stdio.h>
#include?<string.h>
int?main()
{
?int?next[30];
?int?i=1,j=0;
?char?list[30]?="abc";
?char?goal[100]="abdabce";
?next[0]=-1;
?next[1]=0;
?int?lenlist=strlen(list);
?while(i<lenlist)
?{
??if(j==0?||?list[i]==list[j])
??{???????
???i++;
???j++;
???next[i]=j;
??}
??else
??{
???j=next[j];
??}
?}
?for(i=0;i<=lenlist;i++)
?{
??printf("%d?",next[i]);
?}
?i=0;
?j=0;
?while(list[j]?&&?goal[i])
?{??????
??if(list[i]==goal[j])?
??{
???i++;
???j++;
??}
??else?if(j==-1)
??{
???i++;
???j++;
??}
??else
??{
???j=next[j];
??}
?}
?printf("j=%d?",j);
?if(j==lenlist)
?{
??printf("包含");
?}
?else
?{
??printf("不包含");
?}?
?return?0;
}
我這樣寫的KMP算法哪里錯(cuò)了呢?
qq_thinginginli_0
2016-11-13 21:44:43