| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10469 人关注过本帖
标题:KMP算法求教
只看楼主 加入收藏
adim
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-10-9
收藏
得分:0 

谢谢斑竹,谢谢各位大侠!


2006-10-29 22:00
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
收藏
得分:0 
[QUOTE]
子串 a b a b a a b a b
next[j] 0 1 1 2 3 4 2 3 4

为例 来讲下
next[j] 里面 开头的红色01 是固定格式.

我就以兰色的4 来说明下为什么是4.
与4有关的, 是4所对应的兰色a之前的所有的字符,即紫色的 a b a b a
这个字符串中所有符合匹配条件的字符串如下
a b a b a a b a b a
a a
a b a a b a 最长的匹配字符串(a b a b a本身除外)在这里 ,长度为3, 再加上1,就是4了

[/QUOTE]

这里还是没有弄懂,“这个字符串中所有符合匹配条件的字符串如下”就是这里,到底是什么匹配啊,大家教教我,尽可能详细点,我学数据结构不久,先谢谢大家了

2006-11-05 16:15
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 
题:
a b a b a a b a b
0 1 1 2 3 4 2 3 4

分解如下:
a
0

a b 这里是固定格式
0 1

a b a 现在是第3个数a比较了,第1个数就是a,所以与第1个比较
0 1 1

a b a b 现在是第4个数b比较了,第3个数a已经与第1个数a匹配,所以现在第4个数无须回到第1个数比较,所以与第2个数0 0 1 1 2 比较.现在匹配如下:(后面也同理)
a b

a b

a b a b a 现在是第5个数a比较了,由于已经有了如上匹配,所以第5个数a只要与第3个数比较
0 1 1 2 3

a b a b a a 现在是第6个数a比较了,由于已经有了如上匹配,所以第6个数a只要与第4个数比较
0 1 1 2 3 4

a b a b a a b 现在是第7个数b比较了,由于b与第5个数a不相等,所以又要重新匹配,但是第6个数b与第1个数a相等,所以
0 1 1 2 3 4 2 第7个数b与第2个数比较

......接下来你应该知道了

2006-11-05 16:47
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
收藏
得分:0 
真的是太谢谢你了,可惜我还是没怎么弄懂,我只知道是自身和自身比较,能不能在详细些说明一下,我太笨了,呵呵,举例来说明好些,用多了数字和字母看了就头晕,

[QUOTE]
现在是第3个数a比较了,第1个数就是a,所以与第1个比较
[/QUOTE]

第3个数比教到底是怎么回事,能不能举个例子,先谢谢了

2006-11-05 17:27
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
收藏
得分:0 

现在董了点,你先看看这样对不对
假如是
abaabbabaab
那么对应的next是
0 1 1 2 2 3 1 2 3 4 5


2006-11-05 17:55
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 
以下是引用余来在2006-11-5 17:55:45的发言:

现在董了点,你先看看这样对不对
假如是
abaabbabaab
那么对应的next是
0 1 1 2 2 3 1 2 3 4 5


是对的


2006-11-05 21:00
lxase
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-7-20
收藏
得分:0 
受教了
刚看这里
懂了
2006-11-05 22:33
yushan520
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-11-24
收藏
得分:0 

太感谢了。收益匪浅啊

2006-11-26 18:46
Haily
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-12-19
收藏
得分:0 
以下是引用菜鸟上路在2006-11-5 16:47:11的发言:

a b a b a a 现在是第6个数a比较了,由于已经有了如上匹配,所以第6个数a只要与第4个数比较
0 1 1 2 3 4

a b a b a a b 现在是第7个数b比较了,由于b与第5个数a不相等,所以又要重新匹配,但是第6个数b与第1个数a相等,所以
0 1 1 2 3 4 2 第7个数b与第2个数比较

......接下来你应该知道了

第7个数b比较,由于b与第5个数a不相等,所以又要重新匹配,但是早在第6个数a比较时,a就与第四个数b不相等了,这时候怎么不重新匹配呢?


发愤图强学编程!
2006-12-19 23:54
myfuture
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2007-8-17
收藏
得分:0 
呃。。貌似有点看懂了,只要去想,总会有点收获的,噶噶。

never give up.....And hope in future...
2007-10-18 19:42
快速回复:KMP算法求教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012829 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved