找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4567|回复: 4

[通用编程] 问下严蔚敏数据结构的串

[复制链接]
发表于 2008-10-9 11:40:49 | 显示全部楼层 |阅读模式
里面一章说的  模式匹配的改进算法

给出的例子是这样的

j           |  1 2 3 4 5 6 7 8

模式  | a  b a a b c a c

next[j] | 0  1  1 2 2 3 1 2

next[1] 是先赋0值的.


之后给出了求 next值的函数
如下所示;
  1. void get_next(SString T,int &next[])
  2. {
  3.     //求模式串T的next函数值并存入数组next
  4.     i = 1;  next[1] = 0;  j = 0;
  5.     while(i<T[0]) //T[0]这里应该是指串T的长度
  6.     {
  7.         if(j==0 || T[i] == T[j])
  8.         {
  9.             ++i;++j;
  10.             next[i] = j;
  11.         }
  12.         else
  13.             j = next[j];
  14.     }
  15. }
复制代码

不过按这个算法,得到的 next[j]的值, 到了 next[4] 就不对了,
按上面的例子到了 next[4] 应该是等于 2  ,但按这算法是等于1
请问这是怎么回事呢?
发表于 2008-10-10 18:07:00 | 显示全部楼层
没看过这本书,数据结构方面的东西,看着就头大....
 楼主| 发表于 2008-10-11 17:15:30 | 显示全部楼层
看了她的视频还是一样的算法,但算出来确实不对....
发表于 2008-10-19 12:13:17 | 显示全部楼层
KMP,建议G搜索,印象有
直接说明,恐用词晦涩,反而误导
发表于 2009-2-12 17:01:55 | 显示全部楼层
百度百科搜索KMP算法,那里的讲解比较详细 = =
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|幻想森林

GMT+8, 2026-11-3 03:07 , Processed in 0.012008 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表