发新话题
打印

KMP模式匹配算法的问题

说的都是一样的道理

但是第三条好象应该是: 负1?

[em01]
多多交流.多多关照.

TOP

const maxlen = 12; type strtp = record ch:Array [1..maxlen] of char; curlen:0..maxlen end;

procedure TForm1.get_next(t:strtp; var next:array of integer); var j,k: integer; begin {求模式串t的next函数值并存入数组next} j := 1; k := 0; next[1] := 0;{初始化} while j < t.curlen do begin if (k=0) or (t.ch[j]=t.ch[k]) then begin j := j + 1; k := k + 1; next[j] := k; end else k := next[k]; end; end;

var t: strtp; i: integer; begin t.ch[1] := 'a'; t.ch[2] := 'a'; t.ch[3] := 'b'; t.ch[4] := 'b'; t.ch[5] := 'a'; t.ch[6] := 'a'; t.ch[7] := 'c'; t.ch[8] := 'c'; t.ch[9] := 'a'; t.ch[10] := 'a'; t.ch[11] := 'b'; t.ch[12] := 'b'; t.curlen := 11; get_next(t,next); for i := 1 to 12 do showmessage(inttostr(next));

我仿照课本上的算法,写了一段程序,怎么报出来的结果和课本上的答案不一样啊。P81页的例子。请看看,我觉得这块很重要的,没准考试的时候就要考呢

************* 宝剑锋从磨砺出, 梅花香自苦寒来。 *************

TOP

这个..往年好象是较常考的

另外,偶们的书不太一样哦..

你说的那个失效函数怎么就那么定义呢

[em06]
多多交流.多多关照.

TOP

怎么还有用DELPHI的???
骑着小猪学VC~~~~~~~~

TOP

我用的是严尉敏的课本啊,清华大学出版社的
************* 宝剑锋从磨砺出, 梅花香自苦寒来。 *************

TOP

也有可能教材比较旧了
************* 宝剑锋从磨砺出, 梅花香自苦寒来。 *************

TOP

是有点旧了,你用的应该是PASCAL版的吧?

现在有C版的还有C++版的,不过能常握主要内容也不错了,按学校要求选择教材吧.

[em01]
多多交流.多多关照.

TOP

太感谢了,大家。[em04]

TOP

其实就是繁点,有点耐性就OK!

一定要成功!

TOP

UP

TOP

发新话题