模式匹配算法的設(shè)計與實現(xiàn)_第1頁
模式匹配算法的設(shè)計與實現(xiàn)_第2頁
模式匹配算法的設(shè)計與實現(xiàn)_第3頁
模式匹配算法的設(shè)計與實現(xiàn)_第4頁
模式匹配算法的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、五、詳細(xì)設(shè)計 #include#include#include#includeusing namespace std;#define MAX #define M 69class Stringprivate:int n;char *str;int *count; /記錄子串在主串中出現(xiàn)的位置 int Find(int i,String &P); / 簡單匹配算法 找到最近的匹配串后立即停止,而不向下繼續(xù)且缺乏一個數(shù)組記錄位置int *f ; /記錄失敗函數(shù)void Fail(); int KMPFind(int i,String &P); /改進(jìn)的失敗函數(shù)void ImproveFail();i

2、nt KMPFindImprove(int i,String &P); public: String(); /建立一個空串String(const char *p);String(const String &p); /拷貝函數(shù)String();int Length() return n; /返回當(dāng)前串對象長度void Output() coutstr; /輸出字符串int Find(String &P); /簡單匹配算法int KMPFind(String &P); /KMP匹配算法int KMPFindImprove(String &P); /改進(jìn)的KMP匹配算法 void Output2(

3、); /輸出子串在主串中出現(xiàn)的位置;int String:KMPFindImprove(String &P)int sum=0; int j=KMPFindImprove(0,P);while(j!=-1)countsum+=j;if(j=n-P.n) j=KMPFindImprove(j+P.n,P);return sum; void String:Output2() /輸出子串在主串中的位置 int i=0;while(counti!=counti+1 & iMAX-1) /若不再有新的子串匹配,則counti與counti+1均為0coutcounti ;i+; void menu()c

4、out*endl;coutendl;coutendl; cout 1.簡單模式匹配算法endl;coutendl;coutendl;cout 2.KMP模式匹配算法endl;coutendl;cout 4.退出endl;coutendl;coutendl;cout#endl; void main() int choice=0; menu(); clock_t start,finish;while(choice!=4)/循環(huán)可以連續(xù)選擇cout請輸入選擇choice; if(choice=1) String s1(Through aretro spectivelook at the mathe

5、matics teaching at USTC, this article summarizes universitys teaching achievements in past 45 years.);s1.Output(); coutendl;String s2(teaching);start=clock();int m=s1.Find(s2); s2.Output();cout出現(xiàn)的次數(shù)為:mendl;if(m!=0) cout匹配的位置是;s1.Output2();coutendl;finish=clock();coutendltime is:(double)(finish-start

6、)/CLK_TCKendl;if(choice=2) clock_t start,finish;start=clock();String s1(Through a retrospective look at the mathematics teaching at USTC, this article summarizes universitys teaching achievements in past 45 years.);s1.Output(); coutendl;String s2(teaching);s2.Output(); coutendl;int n=s1.KMPFind(s2);

7、cout出現(xiàn)的次數(shù)為:nendl;if(n!=0)coutn匹配的位置是;s1.Output2();coutendl;finish=clock();coutendltime is:(double)(finish-start)/CLK_TCKendl;if(choice=3) clock_t start,finish;start=clock();String s1(Through a retrospective look at the mathematics teaching at USTC, this article summarizes universitys teaching achievements in past 45 years.);s1.Output(); coutendl;String s2(teaching);s2.Output(); coutendl;int n=s1.KMPFindImprove(s2);cout出現(xiàn)在主串中的次

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論