扫码加入训练营

牢记核心词

学习得礼盒

计算机考研:数据结构常用算法精析(4)

2013-12-10 15:48:15来源:新东方在线编辑

  Else j=next[j];

  }

  If(j>T[0]) return i-T[0];

  Else return 0;

  }

  求next[j]的方法和原理

  设k=next[j];那么T1T2…Tk-1= =Tj-k+1……Tj-2Tj-1;

  若Tj= =Tk,那么T1T2…Tk-1Tk= =Tj-k+1……Tj-2Tj-1Tj;

  所以 next[j+1]=k+1=next[j]+1;且T1T2…Tk-1= =Tj-k+1……Tj-2Tj-1已经是

  最长的序列,所以k+1也是next[j+1]最长的

  若Tj不等于Tk,那么就需要重找了。即…..Tj-1Tj ?,

  T1T2….

  所以next[j+1]首先=k=next[j]; 即…..Tj-1Tj ?,

  T1T2…Tk-1.

  若不相等,则next[j+1]=next[k]; 即…..Tj-1Tj ?,

  T1T2….Tnext[k]-1

  直到找到这样的序列, 即…..Tj-1Tj ?,

  T1T2 ...To

  那么,next[j+1]=next[next[j]]=next[next[next[j]]]…..=o+1;

  Void get_next(Sstring T,int next[])

  {

  i=1; next[1]=0; j=0;//i表示当前求的next

  While(i

  {

  if(j=0 | | T[i]=T[j])

  {

  ++i;

  ++j;

  next[i]=j;

  }

  Else j=next[j];

  }

  }

考研公开课小程序

本文关键字: 计算机 考研 数据结构

考研英语核心词汇营

背词+听课+练习+督学,学习得礼盒

更多资料
更多>>
更多内容

关注新东方在线考研服务号

获得21考研真题及答案解析

1. 打开手机微信【扫一扫】,识别上方二维码;
2.点击【关注公众号】,获取资料大礼包。

近10年考研真题及答案免费下载
更多>>
更多公开课>>
更多>>
更多资料