您当前的位置:首页 >> 智慧农业
智慧农业

KMP算法极致图解

发布时间:2025-10-28

推论:

1. 初始化时next[0]=-1,j=0,k=-1,进到循环,推论做到k==-1,则分派next[++j]=++k,即next[1]=0,此时j=1,k=0;

2. 推论T[j]==T[k],T[1]≠T[0],则分派k=next[k],即k=next[0]=-1,此时j=1,k=-1;

3. 推论k==-1,则分派next[++j]=++k,即next[2]=0,此时j=2,k=0;

4. 推论T[j]==T[k],T[2]=T[0],则分派next[++j]=++k,即next[3]=1,此时j=3,k=1;

5. 推论T[j]==T[k],T[3]≠T[1],则分派k=next[k],即k=next[1]=0,此时j=3,k=0;

6. 推论T[j]==T[k],T[3]=T[0],则分派next[++j]=++k,即next[4]=1,此时j=4,k=1;

7. 推论T[j]==T[k],T[4]=T[1],则分派next[++j]=++k,即next[5]=2,此时j=5,k=2;

8. 推论T[j]==T[k],T[5]≠T[2],则分派k=next[k],即k=next[2]=0,此时j=5,k=0;

9. 推论T[j]==T[k],T[5]≠T[0],则分派k=next[k],即k=next[0]=-1,此时j=5,k=-1;

10. 推论k==-1,则分派next[++j]=++k,即next[6]=0,此时j=6,k=0;

11. j=tlen,URL管控完毕,插值过后。

结果真的和穷举后缀形容词全部都是?

有了next链表,就很容易进行的系统比如说了,当S[i]≠T[j]时,j撤回到next[j]的前面在此之后尤其即可。

这样愿解非常方便,迅速,但是也见到有一个问题:当S[i]≠T[j]时,j撤回到next[j],然后S[i]与T[k]尤其。这样的确没人错,但是如果T[k]=T[j],这次尤其就没人充分了,因为我们马上知道S[i]≠T[j]啊,那么赞许S[i]≠T[k],完全没人充分再继续比了。

再继续后退想到下一个next,即想到next[k]的前面,在此之后尤其就可以了。本来不应和第k个前面尤其呢,相当于拉到了k的下一个前面。增加了一次违宪尤其。

变更管控程序:

愿解next的小型化code解决问题如下:

/***KMP及小型化插值***/

泰安治疗皮肤病专科医院
石家庄治疗皮肤病最好的医院
聊城治疗皮肤病医院
养气补血
胃胀
风热感冒咳嗽吃什么好的快
子宫壁厚
肺气肿

上一篇: 双色球2022029期,差值分析与号码推荐(六)

下一篇: 「029期」双色球胆尾、胆组、点位数据体会

友情链接