青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

bon

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  46 Posts :: 0 Stories :: 12 Comments :: 0 Trackbacks

常用鏈接

留言簿(2)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

重新看了KMP算法,有了新的理解。主要參考資料/Files/bon/kmp2.pdf

附件里說得很好,跟傳統的教程不同。
首先定義串s的前綴s',空串也是s的前綴,還有一個定義叫做proper prefix:s'是s的proper prefix等價于s'是s的prefix且s' != s,這個定義對于理解KMP有著關鍵的作用。同樣可以定義對應的后綴以及proper suffix。

下面假設模式串為s,被匹配的串為t,且第0個字符是串的第一個字符。

KMP的精髓在于計算next數組(附件里為pi數組)。next[i]=k,k<i(注意這里不取等號,想想為什么),s[0...k]是s的proper prefix,也是s[0...i]的proper suffix,且k是最大的(即不存在l>k,s[0...l]是s[0...i]的proper prefix且是s[0...i]的proper suffix)。

那么next[0]=-1就很自然地被理解:表示的是空串是s[0...0]的proper prefix且是s[0...0]的proper suffix。
另外k嚴格小于i也可以理解:若k==i,但s[0...i]不是s[0...i]的proper prefix 也不是proper suffix,這跟定義沖突。

上述可以用下圖來說明。


上面的式子定義了next數組,但還沒有指出怎么計算next。假設next[0...i]已經計算出來了,next[i+1]怎么算。
這里用的是動態規劃的思想。設s[0...k+1]是s[0...i+1]最長的proper prefix且是proper suffix,k<i,則明顯地s[0...k+1]符合以下性質:

1. s[0...k]是s[0...i]的proper prefix (這一點很明顯,由于k<i)
2. 且s[0...k]是s[0...i]的proper suffix (若不然,s[0...k+1]肯定無法組成s[0...i+1]的suffix)
3. 且s[k+1]==s[i+1]。

因此我們的任務就是找到這樣一個k。而s[0...k]是s[0...i]的proper prefix 和proper suffix這個性質使得我們可以利用已計算的next[0...i]來找k。

找的過程實質就是找到s[0...i+1]一個最長的proper prefix s[0...k], 這個prefix 同時是s[0...i+1]的proper suffix且有s[i+1]==s[k+1],見下圖:

假設s[0...kx]都是s[0...i+1]的proper prefix,且都是s[0...i]的proper suffix。設s[k1+1] != s[i+1],則s[0...k1+1]不可能是s[0...i+1]的proper suffix。
設s[k2+1] = = s[k3+1] = = s[i+1],但由于k3>k2,所以next[i+1] = k3+1

下面看poj上的一道題目的代碼:
 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 char w[10001],t[1000001];
 6 int n;
 7 int next[10001];
 8 
 9 int main()
10 {
11     scanf("%d",&n);
12     while(n--){
13         scanf("%s",w);
14         scanf("%s",t);
15         // process w
16         int wLength = strlen(w);
17         next[0]=-1;
18         int i=1;
19         int p;
20         while(i<wLength){
21             p=next[i-1];
22             while(p!=-1 && w[p+1]!=w[i]) p=next[p];
23             if(w[p+1]==w[i]) next[i]=p+1;
24             else next[i]=-1;
25             i++;
26         }
27         //for(i=0;i<wLength;i++) printf("%d",next[i]);
28         //printf("\n");
29         // matching
30         int j=-1,cnt=0;
31         i=-1;
32         int tLength = strlen(t);
33         while(j<tLength){
34             if(t[j+1]==w[i+1]){
35                 i++;
36                 j++;
37                 if(i==wLength-1){
38                     cnt++;
39                     i=next[i];
40                 }
41             }else{
42                 if(i==-1) j++;
43                 else i=next[i];
44             }
45         }
46         printf("%d\n",cnt);
47     }
48     return 1;
49 }
50 


posted on 2008-07-25 11:45 bon 閱讀(424) 評論(0)  編輯 收藏 引用 所屬分類: Programming Contest

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


Google PageRank 
Checker - Page Rank Calculator
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美一区二区三区在线视频| 欧美一区在线看| 欧美激情一二区| 亚洲麻豆视频| 夜久久久久久| 国产欧美日韩91| 蜜臀av一级做a爰片久久| 久久婷婷国产综合精品青草| 亚洲国产精品久久91精品| 亚洲国产另类精品专区| 欧美精品一区视频| 午夜精品国产更新| 久久精品青青大伊人av| 亚洲精品中文字幕有码专区| 亚洲免费av片| 国产亚洲成av人片在线观看桃| 久久久久久9| 欧美精品性视频| 欧美在线日韩精品| 欧美电影免费观看高清| 亚洲综合成人在线| 久久―日本道色综合久久| 亚洲精品国产视频| 亚洲一区二区高清视频| 亚洲国产精品t66y| 亚洲深夜福利网站| 亚洲国产cao| 一本色道久久综合亚洲精品按摩| 国产性猛交xxxx免费看久久| 亚洲高清在线视频| 国产午夜精品在线| 亚洲精品一二三区| 好吊色欧美一区二区三区视频| 91久久国产自产拍夜夜嗨| 国产视频观看一区| 亚洲靠逼com| 伊人色综合久久天天| 一区二区三区日韩精品视频| 亚洲国产日韩美| 午夜老司机精品| 中国亚洲黄色| 蜜桃精品久久久久久久免费影院| 亚洲专区一区| 欧美精品一区二区三区一线天视频| 亚洲欧美成人一区二区在线电影 | 亚洲精品国产系列| 欧美一区二区三区视频在线| 夜夜爽www精品| 久久最新视频| 久久夜色精品国产欧美乱极品| 欧美日韩中文| 亚洲另类春色国产| 亚洲精品视频在线播放| 久久在线观看视频| 久热国产精品视频| 国产欧美日韩在线播放| 一区二区三区欧美成人| 一区二区电影免费观看| 欧美大片一区| 亚洲国产欧美在线人成| 亚洲韩国精品一区| 久久尤物视频| 欧美激情精品久久久六区热门| 黄色综合网站| 久久男人资源视频| 久久精品日韩一区二区三区| 国产日韩欧美精品| 欧美伊人久久大香线蕉综合69| 欧美一区二区视频97| 国产欧美一区二区精品仙草咪| 亚洲婷婷综合久久一本伊一区| 亚洲一区二区高清| 国产精品久久久久免费a∨| 在线亚洲自拍| 欧美一区二区大片| 国产亚洲欧美激情| 久久亚洲一区| 亚洲高清视频一区二区| 一本久久综合| 国产精品色网| 久久精品论坛| 亚洲人成绝费网站色www| 一区二区国产精品| 国产精品久久久久久久7电影| 亚洲一区在线观看视频 | 国产一区二区中文字幕免费看| 在线亚洲欧美视频| 久久超碰97人人做人人爱| 国产日韩欧美视频在线| 久久久午夜电影| 亚洲区一区二| 久久精品导航| 亚洲免费激情| 国产日韩精品一区二区浪潮av| 午夜一区二区三区不卡视频| 蜜桃视频一区| 亚洲一区二区在线免费观看视频| 国产日产欧产精品推荐色| 久久免费的精品国产v∧| 亚洲人午夜精品| 久久精品理论片| 亚洲精品国产视频| 国产欧美日韩麻豆91| 欧美成在线观看| 亚洲综合好骚| 亚洲第一综合天堂另类专| 西瓜成人精品人成网站| 在线播放一区| 国产毛片一区二区| 欧美精品系列| 久久久久高清| 亚洲欧美在线网| 亚洲精品免费在线| 久久综合精品国产一区二区三区| 亚洲视频大全| 亚洲精品久久久久久一区二区 | 欧美成人免费在线观看| 午夜激情久久久| 日韩视频精品在线| 欧美91大片| 欧美一级在线视频| 一本色道久久综合精品竹菊 | 欧美国产国产综合| 久久久午夜视频| 亚洲综合成人在线| 99国产精品久久| 91久久精品国产91性色 | 亚洲电影第三页| 国产日韩综合一区二区性色av| 欧美精品日本| 欧美护士18xxxxhd| 久久久久久久一区二区| 性欧美8khd高清极品| 国产精品99久久久久久久久久久久| 欧美99久久| 久久综合一区二区| 久久国产一二区| 久久国产一区二区三区| 欧美一区国产在线| 亚洲一区二区欧美日韩| 在线性视频日韩欧美| 在线视频欧美日韩| 国产精品99久久99久久久二8| 91久久在线观看| 亚洲精品一区二区三区婷婷月 | 亚洲一区视频| 亚洲自拍偷拍色片视频| 亚洲一级黄色av| 亚洲专区一二三| 午夜伦欧美伦电影理论片| 亚洲欧美日本精品| 欧美一区二区精品久久911| 先锋影音久久久| 久久久久一区| 美日韩免费视频| 亚洲国产精品一区制服丝袜| 亚洲精品久久视频| 一本在线高清不卡dvd| 亚洲一区二区精品在线| 亚洲综合日本| 久久噜噜噜精品国产亚洲综合| 久久久亚洲人| 欧美精品在线网站| 国产精品久久久久久久9999| 国产精品免费久久久久久| 国产有码一区二区| 亚洲国产精品一区二区www| 亚洲伦理自拍| 欧美一二三区精品| 开心色5月久久精品| 亚洲黄色尤物视频| 亚洲午夜久久久久久久久电影网| 亚洲欧美日韩精品久久久| 久久久综合网| 欧美日韩一区在线| 国内精品免费午夜毛片| 99国内精品久久久久久久软件| 亚洲在线不卡| 欧美成人精品福利| 夜夜嗨网站十八久久| 久久国产精品久久久| 欧美国产日韩一区| 国产一区二区高清视频| 一本久道久久综合婷婷鲸鱼| 久久福利毛片| 日韩午夜剧场| 久久躁日日躁aaaaxxxx| 国产精品日韩二区| 亚洲人成网站777色婷婷| 性欧美暴力猛交69hd| 欧美黄色小视频| 欧美一区二区免费| 欧美日韩免费一区| 在线观看亚洲视频| 久久国产福利| 夜久久久久久| 欧美精品videossex性护士| 国产色爱av资源综合区| 亚洲午夜在线视频| 最新国产成人av网站网址麻豆|