| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2037 人关注过本帖
标题:问题 关于KMP 算的NEXT 函数求值
只看楼主 加入收藏
程序冬天
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-12-15
收藏
 问题点数:0 回复次数:6 
问题 关于KMP 算的NEXT 函数求值
问题 关于KMP 算的NEXT 函数求值



谁能给我详细的解答过程
搜索更多相关主题的帖子: NEXT KMP 求值 函数 
2005-12-15 20:40
独孤逍遥
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2005-9-25
收藏
得分:0 
晕!!!!!!!!!

物以方圆 义薄云天 何以载物 四海纵横
2005-12-30 10:08
yynn
Rank: 1
等 级:新手上路
帖 子:279
专家分:0
注 册:2005-11-4
收藏
得分:0 
给我到题我就能给你做了
讲不清楚啊

2006-01-01 19:40
thq2004423
Rank: 1
等 级:新手上路
帖 子:141
专家分:0
注 册:2005-12-15
收藏
得分:0 
那个确实很麻烦,但只要多看书就行了,我至少看了5遍才看懂,楼主不要放弃阿!

2006-01-04 17:07
xtxei2468
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-1-4
收藏
得分:0 
int Index_KMP(SString S,SString T,int pos){
int i=pos;int j=1;
while(i<=S[0]&&j<=T[0]){
if(j==0||S[i]==T[j]){++i;++j;}//if
else j=next[j];
}
if(j>T[0]) return(i-T[0]);
else return 0;
}//Index_KMP


void get_next(SString T,int next[]){
int i=1;next[1]=0;j=0;
while(i<T[0]){
if(j==0||T[i]==T[j]){++i;++j;next[i]=j;}
else j=next[j];
}
}//get_next

是这些吗?

吾不能变心以从俗兮 故将愁苦而终穷
2006-01-04 20:09
viana586
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-2-8
收藏
得分:0 
首先,将第一与第二个NEXT分别写为0,1.现在来求第三个,如果你求的这个字符的前一个字符或几个连续字符(要以你所求字符的前一个字符为结束字符)与第一个字符或从第一个字符开始连续的几个字符相同,那么就要有相同字符的个数加1,求出来的结果就是你所求字符NEXT值!
如下题:
序号 0 1 2 3 4 5 6 7 8 9 10
a b c a a b b a b c d
next 0 1 1 1 2 2 3 1 2 3 4
第0号与第1号字符的NEXT值分别为0,1.第2号字符的NEXT值为:此时看第1号字符,它与第0号字符不相同,则它的NEXT值为1,再看第4号字符:第3号字符为a,它与第0号字符相同,则为1+1=2;第6号与第10号:6号前是5号,虽然它与第0号字符不相同,但是45两号的字符ab与01两号的字符相同,故为2+1=3;10号前是9号,789是abc,012也是abc,故为3+1=4!
懂否?

2006-02-08 13:17
202x
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-4-21
收藏
得分:0 

把书多看几遍就懂了!!!

2006-02-20 22:52
快速回复:问题 关于KMP 算的NEXT 函数求值
数据加载中...
 
   



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

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