问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

串模式匹配的kmp算法中next[0]的值到底是0还是-1;next[1]的值又到底是1还是0?

发布网友 发布时间:2022-04-27 09:22

我来回答

4个回答

热心网友 时间:2023-09-18 12:18

因为找next值的时候是从第一个字符开始的,规定第一个字符的next值为0,即如果第一个字符的下标为0则next[0]=0,如果第一个字符的下标是1则next[1]=0。。。因为next值将作为主串的标,数组下标不能为负数,所以next[0]不能为-1。。。

热心网友 时间:2023-09-18 12:18

; #include <stdlib.h> #include <vector> using namespace std; inline void NEXT(const string& T,vector<int>& next) } inline string::size_type COUNT_KMP(const string& S, const string& T) else }//while end if(pos==T.size()&&(iter-index)==T.size())++count; } //for end return count; } int main(int argc, char *argv[]) 补上个Pascal的KMP算法源码 PROGRAM Impl_KMP; USES CRT; CONST MAX_STRLEN = 255; VAR next : array [ 1 .. MAX_STRLEN ] of integer; str_s, str_t : string; int_i : integer; Procere get_nexst( t : string ); Var j, k : integer; Begin j := 1; k := 0; while j < Length(t) do begin if ( k = 0 ) or ( t[j] = t[k] ) then begin j := j + 1; k := k + 1; next[j] := k; end else k := next[k]; end; End; Function index( s : string; t : string ) : integer; Var i, j : integer; Begin get_next(t); index := 0; i := 1; j := 1; while ( i <= Length(s) ) and ( j <= Length(t) ) do begin if ( j = 0 ) or ( s[i]= t[j] ) then begin i := i + 1; j := j + 1; end else j := next[j]; if j > Length(t) then index := i - Length(t); end; End; BEGIN ClrScr; Write(‘s = ’); Readln(str_s); Write(‘t = ’); Readln(str_t); int_i := index( str_s, str_t ); if int_i <> 0 then begin Writeln( 'Found' , str_t,' in ', str_s, 'at ', int_i,' .' ); end else Writeln( 'Cannot find ', str_t,' in' , str_s, '. '); END. index函数用于模式匹配,t是模式串,s是原串。返回模式串的位置,找不到则返回0

热心网友 时间:2023-09-18 12:19

next[0] = 0
请参看我的百度空间
http://hi.baidu.com/ozwarld/blog/item/bb81746c39081aed4216941f.html?timeStamp=1304169980484

参考资料:http://hi.baidu.com/ozwarld/blog/item/bb81746c39081aed4216941f.html?timeStamp=1304169980484

热心网友 时间:2023-09-18 12:19

有两种next函数的求法,next[0]=0和next[1]=1是由一种方法规定的,next[0]=-1和next[1]=0是由另一种方法规定的。这两种方法求出来的失败函数其实是一样的,只不过差了一个1,即:(-1,0)都加1为(0,1)。在程序里用的时候,如果直接拿next[j]来当下标,自然是用上述第一种方法了,用第二种方法求出来的next[j]用的时候得加1。第一种方法有人在csdn上讲了,网页链接,他还讲了怎么求nextval[j],静心看能看懂。第二种方法比较直观,直接揭示了KMP算法的原理,我老师教学采用的就是这种方法,此处版式受限,以后补我的个人博客链接详细讲解

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
汽车胎扎了个钉子是拔还是不拔? 台式机电源什么牌子好 台式机电源有哪些牌子 金牌 银牌 铜牌电源哪个好 台式机电源等级性能解析 电脑电源推荐-全汉(FSP) 500W银牌(88%)全模组SFX电源 我的妻子背叛了我,我该怎么办, 初一语文复习材料(急急急!!!) 绿色蝈蝈课后题答案七上语文 女人梦见黄鼠狼的七大预兆 怎么知道注塑机螺杆有无卡死现象? 请问为什么在钢之炼金术师fa里,爱德华一开始不用炼金术换 请问ARM代码中BHI NEXT1是什么意思?代码段如下 CMP R1,R2; BHI NEXT kmp算法的next函数为什麽next(1)=0? vf for 语句后的NEXT 1是什么意思啊? 在VFP中 display next 1什么意思?等价于那个命令? vaporfly next 1有没有气垫 水瓶男损你是什么意思 水瓶座男生讨厌你的特征 为什么水瓶座的男生这样对我? 水瓶座男生喜欢玩暧昧? 水瓶座男生正真喜欢你的表现? 如果水瓶座的男生给你表白还很暧昧会是真的吗? 水瓶座男生玩弄爱情的手段有什么? 女孩子如何判断水瓶座男生是想跟你恋爱还是只是玩玩? 我想给电脑加个内存,怎么弄? 想给电脑加内存该怎么办? 侠盗猎车手 圣安地列斯 救火的任务 怎么搞 GTA罪恶都市传奇PSP版中,灭火剧情任务怎么过? 摩尔庄园足球场怎么救火 如龙6扑灭神市町的小火 灭火任务怎么做攻略 MC灭火任务现在还能接吗?我怎么接不到了? while(sqlrst.next1)是什么意思 梦见很多猫,白的黑的,大概有7或8只左右,全是小猫. 最近有什么好听的快节奏中文歌 VF中执行LIST NEXT1命令后,记录指针的位置指向哪里?为什么? 推荐几首节奏快的好听的中文歌 梦到几只可爱的会说话的猫咬我的腿和脚,代表什么? next数组是什么 谁能提供点快节奏的中文歌曲啊? 数据结构中串的模式匹配中next[j]等于0或者1是什么意思 有超快节奏感的中文歌 有没有快节奏好听的中文歌? 梦见很多猫~大小都有~其中还有一只紫红色的~都很漂亮~是什么意思呢? 女生版的快节奏的中文歌曲有哪些? 找快节奏的中文歌 推荐几首节奏较快的中文歌 有没有好听的中文歌曲?节奏快一点的 求华语快节奏的歌曲。急 求快节奏的中文歌曲 求节奏比较快的中文歌曲 比较好听快节奏的中文歌