數(shù)據(jù)結(jié)構(gòu)- 串的模式匹配算法:bf和 kmp算法

數(shù)據(jù)結(jié)構(gòu)- 串的模式匹配算法:bf和 kmp算法

ID:34146889

大小:571.80 KB

頁數(shù):11頁

時間:2019-03-03

數(shù)據(jù)結(jié)構(gòu)- 串的模式匹配算法:bf和 kmp算法_第1頁
數(shù)據(jù)結(jié)構(gòu)- 串的模式匹配算法:bf和 kmp算法_第2頁
數(shù)據(jù)結(jié)構(gòu)- 串的模式匹配算法:bf和 kmp算法_第3頁
數(shù)據(jù)結(jié)構(gòu)- 串的模式匹配算法:bf和 kmp算法_第4頁
數(shù)據(jù)結(jié)構(gòu)- 串的模式匹配算法:bf和 kmp算法_第5頁
資源描述:

《數(shù)據(jù)結(jié)構(gòu)- 串的模式匹配算法:bf和 kmp算法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、本文由西安白癜風(fēng)專科醫(yī)院http://www.xapfb120.com/收集,轉(zhuǎn)載請注明出處數(shù)據(jù)結(jié)構(gòu)-串的模式匹配算法:BF和KMP算法Brute-Force算法的思想1.BF(Brute-Force)算法Brute-Force算法的基本思想是:1)從目標串s的第一個字符起和模式串t的第一個字符進行比較,若相等,則繼續(xù)逐個比較后續(xù)字符,否則從串s的第二個字符起再重新和串t進行比較。2)依此類推,直至串t中的每個字符依次和串s的一個連續(xù)的字符序列相等,則稱模式匹配成功,此時串t的第一個字符在串s中的位置就是t在s中的位置,

2、否則模式匹配不成功。Brute-Force算法的實現(xiàn)本文由西安白癜風(fēng)專科醫(yī)院http://www.xapfb120.com/收集,轉(zhuǎn)載請注明出處本文由西安白癜風(fēng)專科醫(yī)院http://www.xapfb120.com/收集,轉(zhuǎn)載請注明出處c語言實現(xiàn):1.//Test.cpp:Definestheentrypointfortheconsoleapplication.2.//3.#include"stdafx.h"4.#include5.#include"stdlib.h"6.#include

3、m>7.usingnamespacestd;8.9.//宏定義10.#defineTRUE111.#defineFALSE012.#defineOK113.#defineERROR014.15.#defineMAXSTRLEN10016.17.typedefcharSString[MAXSTRLEN+1];18./************************************************************************/19./*20.返回子串T在主串S中第pos位置之后的位置,若不

4、存在,返回021.*/22./************************************************************************/23.intBFindex(SStringS,SStringT,intpos)24.{25.if(pos<1

5、

6、pos>S[0])exit(ERROR);26.inti=pos,j=1;27.while(i<=S[0]&&j<=T[0])28.{29.if(S[i]==T[j])30.{31.++i;++j;32.}else{33.i=i-j+2;

7、34.j=1;35.}36.}37.if(j>T[0])returni-T[0];38.returnERROR;39.}40.41.42.本文由西安白癜風(fēng)??漆t(yī)院http://www.xapfb120.com/收集,轉(zhuǎn)載請注明出處本文由西安白癜風(fēng)??漆t(yī)院http://www.xapfb120.com/收集,轉(zhuǎn)載請注明出處43.voidmain(){44.SStringS={13,'a','b','a','b','c','a','b','c','a','c','b','a','b'};45.SStringT={5,'a',

8、'b','c','a','c'};46.intpos;47.pos=BFindex(S,T,1);48.cout<<"Pos:"<

9、ww.xapfb120.com/收集,轉(zhuǎn)載請注明出處需要討論兩個問題:①如何由當(dāng)前部分匹配結(jié)果確定模式向右滑動的新比較起點k?②模式應(yīng)該向右滑多遠才是高效率的?現(xiàn)在討論一般情況:假設(shè)主串:s:?s(1)s(2)s(3)……s(n)?;模式串:p:?p(1)p(2)p(3)…..p(m)?現(xiàn)在我們假設(shè)主串第i個字符與模式串的第j(j<=m)個字符?失配?后,主串第i個字符與模式串的第k(k

10、..P(j-1)’=’S(i-j+1)……S(i-1)’從而推導(dǎo)出k到j(luò)-1位的“部分匹配”:即P的j-1~j-k=S前i-1~i-(k-1))位‘P(j-k+1)…..P(j-1)’=’S(i-k+1)S(i-k+2)……S(i-1)’由于s(i)≠p(j),接下來s(i)將與p(k)繼續(xù)比較,則模式串中的前(k-

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。