麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

KMP(非最大長度版本)

2019-11-10 20:20:28
字體:
來源:轉載
供稿:網友

KMP(非最大長度版本)

模板1:

#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;int next[10];int nextval[10];void getnext(char *p,int next[]){ int plen=strlen(p); next[0]=-1; int k=-1; int j=0; while(j<plen-1) { if(k==-1||p[j]==p[k]) next[++j]=++k; else k=next[k]; }}//優化后的next數組,不能允許p[j]=p[next[j]]void getnextval(char *p,int nextval[]){ int plen=strlen(p); nextval[0]=-1; int k=-1; int j=0; while(j<plen-1) { if(k==-1||p[j]==p[k]) { ++j;++k; if(p[j]!=p[k]) nextval[j]=k; else nextval[j]=nextval[k]; } else k=nextval[k]; }}//kmp的整體時間復雜度為O(m+n),m和n分別為模式串和文本串的長度int kmp(char *s,char *p){ int i=0,j=0; int slen=strlen(s),plen=strlen(p); while(i<slen&&j<plen) { if(j==-1||s[i]==p[j]) i++,j++; else j=next[j]; } if(j==plen) return i-j;//模式串第一次在文本串中出現的位置 else return -1;}int main(){ char ch[10]; char s[50]; while(cin>>ch>>s) { getnext(ch,next); getnextval(ch,nextval); for(int i=0;i<strlen(ch);i++) { cout<<next[i]<<" "; } cout<<endl; for(int i=0;i<strlen(ch);i++) { cout<<nextval[i]<<" "; } cout<<endl; cout<<kmp(s,ch)<<endl; } return 0;}

模板2:

#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;int fail[30];void getfail(char *p){ int plen=strlen(p); fail[0]=0,fail[1]=0;//遞推初值 for(int i=1;i<plen;i++) { int j=fail[i]; while(j&&p[i]!=p[j]) j=fail[j]; if(p[i]==p[j]) fail[i+1]=j+1; else fail[i+1]=0; }}void kmp(char *s,char *p){ int slen=strlen(s); int plen=strlen(p); int j=0;//當前結點編號 for(int i=0;i<slen;i++)//文本串當前指針 { while(j&&p[j]!=s[i])//順著失配邊走,直到可以匹配 j=fail[j]; if(p[j]==s[i]) j++; if(j==plen) { cout<<"find at position "<<i-plen+1<<endl; j=fail[j]; } }}int main(){ char ch[30]; char s[50]; while(cin>>ch>>s) { getfail(ch); for(int i=0;i<=strlen(ch);i++) { cout<<fail[i]<<" "; } cout<<endl; kmp(s,ch); } return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲精品动漫在线观看 | 久久久精品综合 | 男男羞羞视频网站国产 | 欧美亚洲一级 | 国产精品久久久久久久久久久天堂 | 大西瓜永久免费av在线 | 久色porn| 狠狠干天天操 | 最新中文字幕在线视频 | 美国黄色小视频 | 国产美女视频黄a视频免费 日韩黄色在线播放 | 久久久久久久91 | 久久综合九色综合久久久精品综合 | 日韩字幕| 色视频在线 | 成人小视频免费在线观看 | 免费视频99 | 久久久久久久久亚洲精品 | 夜夜夜精品视频 | 五月天影院,久久综合, | 午夜视频观看 | 看黄在线观看 | 久久久久中文字幕 | 免费福利在线视频 | 久久久久久久久久久久久久国产 | 亚洲成人福利电影 | 久久爽久久爽久久av东京爽 | 日本免费中文字幕 | 国产91精品久久久久久久 | 亚洲特黄| 国产在线导航 | 日韩电影一区二区三区 | 亚洲成人精品一区二区 | 欧美视频在线观看一区 | chinese军人gay呻吟 | 欧美日韩在线看片 | 91久久线看在观草草青青 | 国产成人精品免费视频大全最热 | 亚洲啊v在线观看 | 黄视频网站免费观看 | 国产精品久久久久久久久久三级 |