锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品无码久久综合,国产精品久久久久影院嫩草,久久天堂AV综合合色蜜桃网http://www.shnenglu.com/icecream/category/10481.html鎴戠殑浠g爜澶囦喚錛?/description>zh-cnFri, 02 Apr 2010 17:15:35 GMTFri, 02 Apr 2010 17:15:35 GMT60Suffix Treehttp://www.shnenglu.com/icecream/archive/2009/05/19/83412.htmlicecreamicecreamTue, 19 May 2009 13:29:00 GMThttp://www.shnenglu.com/icecream/archive/2009/05/19/83412.htmlhttp://www.shnenglu.com/icecream/comments/83412.htmlhttp://www.shnenglu.com/icecream/archive/2009/05/19/83412.html#Feedback0http://www.shnenglu.com/icecream/comments/commentRss/83412.htmlhttp://www.shnenglu.com/icecream/services/trackbacks/83412.html闃呰鍏ㄦ枃

icecream 2009-05-19 21:29 鍙戣〃璇勮
]]>
AC 鑷姩鏈虹畻娉曡瑙o紙杞級http://www.shnenglu.com/icecream/archive/2009/04/28/81344.htmlicecreamicecreamTue, 28 Apr 2009 11:31:00 GMThttp://www.shnenglu.com/icecream/archive/2009/04/28/81344.htmlhttp://www.shnenglu.com/icecream/comments/81344.htmlhttp://www.shnenglu.com/icecream/archive/2009/04/28/81344.html#Feedback0http://www.shnenglu.com/icecream/comments/commentRss/81344.htmlhttp://www.shnenglu.com/icecream/services/trackbacks/81344.html      濡傛灉浣犲KMP綆楁硶鍜屼簡瑙g殑璇濓紝搴旇鐭ラ亾KMP綆楁硶涓殑next鍑芥暟錛坰hift鍑芥暟鎴栬協ail鍑芥暟錛夋槸騫蹭粈涔堢敤鐨勩侹MP涓垜浠敤涓や釜鎸囬拡i鍜宩鍒嗗埆琛ㄧず錛孉[i-j+ 1..i]涓嶣[1..j]瀹屽叏鐩哥瓑銆備篃灝辨槸璇達紝i鏄笉鏂鍔犵殑錛岄殢鐫i鐨勫鍔爅鐩稿簲鍦板彉鍖栵紝涓攋婊¤凍浠[i]緇撳熬鐨勯暱搴︿負j鐨勫瓧絎︿覆姝eソ鍖歸厤B涓茬殑鍓?j涓瓧絎︼紝褰揂[i+1]≠B[j+1]錛孠MP鐨勭瓥鐣ユ槸璋冩暣j鐨勪綅緗紙鍑忓皬j鍊鹼級浣垮緱A[i-j+1..i]涓嶣[1..j]淇濇寔鍖歸厤涓旀柊鐨凚[j+1]鎭板ソ涓嶢[i+1]鍖歸厤錛岃宯ext鍑芥暟鎭版伆璁板綍浜嗚繖涓猨搴旇璋冩暣鍒扮殑浣嶇疆銆傚悓鏍稟C鑷姩鏈虹殑澶辮觸鎸囬拡鍏鋒湁鍚屾牱鐨勫姛鑳斤紝涔熷氨鏄褰撴垜浠殑妯″紡涓插湪Tire涓婅繘琛屽尮閰嶆椂錛屽鏋滀笌褰撳墠鑺傜偣鐨勫叧閿瓧涓嶈兘緇х畫鍖歸厤鐨勬椂鍊欙紝灝卞簲璇ュ幓褰撳墠鑺傜偣鐨勫け璐ユ寚閽堟墍鎸囧悜鐨勮妭鐐圭戶緇繘琛屽尮閰嶃?br>       鐪嬩笅闈㈣繖涓緥瀛愶細緇欏畾5涓崟璇嶏細say she shr he her錛岀劧鍚庣粰瀹氫竴涓瓧絎︿覆yasherhs銆傞棶涓鍏辨湁澶氬皯鍗曡瘝鍦ㄨ繖涓瓧絎︿覆涓嚭鐜拌繃銆傛垜浠厛瑙勫畾涓涓婣C鑷姩鏈烘墍闇瑕佺殑涓浜涙暟鎹粨鏋勶紝鏂逛究鎺ヤ笅鍘葷殑緙栫▼銆?br>
1 const int kind = 26;
2 struct node{  
3      node *fail;       //澶辮觸鎸囬拡
4      node *next[kind]; //Tire姣忎釜鑺傜偣鐨勪釜瀛愯妭鐐癸紙鏈澶氫釜瀛楁瘝錛?br> 5     int count;        //鏄惁涓鴻鍗曡瘝鐨勬渶鍚庝竴涓妭鐐?br> 6      node(){           //鏋勯犲嚱鏁板垵濮嬪寲
7          fail=NULL;
8          count=0;
9          memset(next,NULL,sizeof(next));
10      }
11 }*q[500001];          //闃熷垪錛屾柟渚跨敤浜巄fs鏋勯犲け璐ユ寚閽?br> 12 char keyword[51];     //杈撳叆鐨勫崟璇?br> 13 char str[1000001];    //妯″紡涓?br> 14 int head,tail;        //闃熷垪鐨勫ご灝炬寚閽?/div>

鏈変簡榪欎簺鏁版嵁緇撴瀯涔嬪悗錛屽氨鍙互寮濮嬬紪紼嬩簡錛?br>     棣栧厛錛屽皢榪?font face="Calibri">5涓崟璇嶆瀯閫犳垚涓媯?font face="Calibri">Tire錛屽鍥?font face="Calibri">-1鎵紺恒?br>

 

1 void insert(char *str,node *root){
2      node *p=root;
3     int i=0,index;  
4     while(str[i]){
5          index=str[i]-'a';
6         if(p->next[index]==NULL) p->next[index]=new node();  
7          p=p->next[index];
8          i++;
9      }
10      p->count++;     //鍦ㄥ崟璇嶇殑鏈鍚庝竴涓妭鐐筩ount+1錛屼唬琛ㄤ竴涓崟璇?br> 11 }

鍦ㄦ瀯閫犲畬榪欐5Tire涔嬪悗錛屾帴涓嬪幓鐨勫伐浣滃氨鏄瀯閫犱笅澶辮觸鎸囬拡銆傛瀯閫犲け璐ユ寚閽堢殑榪囩▼姒傛嫭璧鋒潵灝變竴鍙ヨ瘽錛氳榪欎釜鑺傜偣涓婄殑瀛楁瘝涓?font face="Calibri">C錛屾部鐫浠栫埗浜茬殑澶辮觸鎸囬拡璧幫紝鐩村埌璧板埌涓涓妭鐐癸紝浠栫殑鍎垮瓙涓篃鏈夊瓧姣嶄負C鐨勮妭鐐廣傜劧鍚庢妸褰撳墠鑺傜偣鐨勫け璐ユ寚閽堟寚鍚戦偅涓瓧姣嶄篃涓?font face="Calibri">C鐨勫効瀛愩傚鏋滀竴鐩磋蛋鍒頒簡root閮芥病鎵懼埌錛岄偅灝辨妸澶辮觸鎸囬拡鎸囧悜root銆傚叿浣撴搷浣滆搗鏉ュ彧闇瑕侊細鍏堟妸root鍔犲叆闃熷垪(root鐨勫け璐ユ寚閽堟寚鍚戣嚜宸辨垨鑰?font face="Calibri">NULL)錛岃繖浠ュ悗鎴戜滑姣忓鐞嗕竴涓偣錛屽氨鎶婂畠鐨勬墍鏈夊効瀛愬姞鍏ラ槦鍒楋紝闃熷垪涓虹┖銆?/p>

1 void build_ac_automation(node *root){
2     int i;
3      root->fail=NULL;
4      q[head++]=root;
5     while(head!=tail){
6          node *temp=q[tail++];
7          node *p=NULL;
8         for(i=0;i<26;i++){
9             if(temp->next[i]!=NULL){
10                 if(temp==root) temp->next[i]->fail=root;                 
11                 else{
12                      p=temp->fail;
13                     while(p!=NULL){  
14                         if(p->next[i]!=NULL){
15                              temp->next[i]->fail=p->next[i];
16                             break;
17                          }
18                          p=p->fail;
19                      }
20                     if(p==NULL) temp->next[i]->fail=root;
21                  }
22                  q[head++]=temp->next[i];  
23              }
24          }   
25      }
26 }

    浠庝唬鐮佽瀵熶笅鏋勯犲け璐ユ寚閽堢殑嫻佺▼錛氬鐓у浘-2鏉ョ湅錛岄鍏坮oot鐨刦ail鎸囬拡鎸囧悜NULL錛岀劧鍚巖oot鍏ラ槦錛岃繘鍏ュ驚鐜傜1嬈″驚鐜殑鏃跺欙紝鎴戜滑闇瑕佸鐞?涓妭鐐癸細root->next[‘h’-‘a’](鑺傜偣h) 鍜?root->next[‘s’-‘a’](鑺傜偣s)銆傛妸榪?涓妭鐐圭殑澶辮觸鎸囬拡鎸囧悜root錛屽茍涓斿厛鍚庤繘鍏ラ槦鍒楋紝澶辮觸鎸囬拡鐨勬寚鍚戝搴斿浘-2涓殑(1)錛?2)涓ゆ潯铏氱嚎錛涚2嬈¤繘鍏ュ驚鐜悗錛屼粠闃熷垪涓厛寮瑰嚭h錛屾帴涓嬫潵p鎸囧悜h鑺傜偣鐨刦ail鎸囬拡鎸囧悜鐨勮妭鐐癸紝涔熷氨鏄痳oot錛涜繘鍏ョ13琛岀殑寰幆鍚庯紝p=p->fail涔熷氨鏄痯=NULL錛岃繖鏃墮鍑哄驚鐜紝騫舵妸鑺傜偣e鐨刦ail鎸囬拡鎸囧悜root錛屽搴斿浘-2涓殑(3)錛岀劧鍚庤妭鐐筫榪涘叆闃熷垪錛涚3嬈″驚鐜椂錛屽脊鍑虹殑絎竴涓妭鐐筧鐨勬搷浣滀笌涓婁竴姝ユ搷浣滅殑鑺傜偣e鐩稿悓錛屾妸a鐨刦ail鎸囬拡鎸囧悜root錛屽搴斿浘-2涓殑(4)錛屽茍鍏ラ槦錛涚4嬈¤繘鍏ュ驚鐜椂錛屽脊鍑鴻妭鐐筯(鍥句腑宸﹁竟閭d釜)錛岃繖鏃舵搷浣滅暐鏈変笉鍚屻傚湪紼嬪簭榪愯鍒?4琛屾椂錛岀敱浜巔->next[i]!=NULL(root鏈塰榪欎釜鍎垮瓙鑺傜偣錛屽浘涓彸杈歸偅涓?錛岃繖鏍蜂究鎶婂乏杈歸偅涓猦鑺傜偣鐨勫け璐ユ寚閽堟寚鍚戝彸杈歸偅涓猺oot鐨勫効瀛愯妭鐐筯錛屽搴斿浘-2涓殑(5)錛岀劧鍚巋鍏ラ槦銆備互姝ょ被鎺細鍦ㄥ驚鐜粨鏉熷悗錛屾墍鏈夌殑澶辮觸鎸囬拡灝辨槸鍥?2涓殑榪欑褰㈠紡銆?br>

   鏈鍚庯紝鎴戜滑渚垮彲浠ュ湪AC鑷姩鏈轟笂鏌ユ壘妯″紡涓蹭腑鍑虹幇榪囧摢浜涘崟璇嶄簡銆傚尮閰嶈繃紼嬪垎涓ょ鎯呭喌錛?1)褰撳墠瀛楃鍖歸厤錛? 琛ㄧず浠庡綋鍓嶈妭鐐規部鐫鏍戣竟鏈変竴鏉¤礬寰勫彲浠ュ埌杈劇洰鏍囧瓧絎︼紝姝ゆ椂鍙渶娌胯璺緞璧板悜涓嬩竴涓妭鐐圭戶緇尮閰嶅嵆鍙紝鐩爣瀛楃涓叉寚閽堢Щ鍚戜笅涓瓧絎︾戶緇尮閰嶏紱(2)褰撳墠瀛楃 涓嶅尮閰嶏紝鍒欏幓褰撳墠鑺傜偣澶辮觸鎸囬拡鎵鎸囧悜鐨勫瓧絎︾戶緇尮閰嶏紝鍖歸厤榪囩▼闅忕潃鎸囬拡鎸囧悜root緇撴潫銆傞噸澶嶈繖2涓繃紼嬩腑鐨勪換鎰忎竴涓紝鐩村埌妯″紡涓茶蛋鍒扮粨灝句負姝€?br>
1 int query(node *root){
2     int i=0,cnt=0,index,len=strlen(str);
3      node *p=root;  
4     while(str[i]){  
5          index=str[i]-'a';  
6         while(p->next[index]==NULL && p!=root) p=p->fail;
7          p=p->next[index];
8          p=(p==NULL)?root:p;
9          node *temp=p;
10         while(temp!=root && temp->count!=-1){
11              cnt+=temp->count;
12              temp->count=-1;
13              temp=temp->fail;
14          }
15          i++;                 
16      }    
17     return cnt;
18 }
    瀵圭収鍥?2錛岀湅涓涓嬫ā寮忓尮閰嶈繖涓緇嗙殑嫻佺▼錛屽叾涓ā寮忎覆涓簓asherhs銆傚浜巌=0,1銆俆rie涓病鏈夊搴旂殑璺緞錛屾晠涓嶅仛浠諱綍鎿嶄綔錛沬=2,3,4 鏃訛紝鎸囬拡p璧板埌宸︿笅鑺傜偣e銆傚洜涓鴻妭鐐筫鐨刢ount淇℃伅涓?錛屾墍浠nt+1錛屽茍涓旇鑺傜偣e鐨刢ount鍊艱緗負-1錛岃〃紺烘敼鍗曡瘝宸茬粡鍑虹幇榪囦簡錛岄槻姝㈤噸澶? 璁℃暟錛屾渶鍚巘emp鎸囧悜e鑺傜偣鐨勫け璐ユ寚閽堟墍鎸囧悜鐨勮妭鐐圭戶緇煡鎵撅紝浠ユ綾繪帹錛屾渶鍚巘emp鎸囧悜root錛岄鍑簑hile寰幆錛岃繖涓繃紼嬩腑count澧炲姞浜? 2銆傝〃紺烘壘鍒頒簡2涓崟璇峴he鍜宧e銆傚綋i=5鏃訛紝紼嬪簭榪涘叆絎?琛岋紝p鎸囧悜鍏跺け璐ユ寚閽堢殑鑺傜偣錛屼篃灝辨槸鍙寵竟閭d釜e鑺傜偣錛岄殢鍚庡湪絎?琛屾寚鍚憆鑺傜偣錛宺鑺傜偣鐨? count鍊間負1錛屼粠鑰宑ount+1錛屽驚鐜洿鍒皌emp鎸囧悜root涓烘銆傛渶鍚巌=6,7鏃訛紝鎵句笉鍒頒換浣曞尮閰嶏紝鍖歸厤榪囩▼緇撴潫銆?br>


icecream 2009-04-28 19:31 鍙戣〃璇勮
]]> AAA级久久久精品无码片| 国产精品久久久久久一区二区三区| 亚洲国产精品久久久久婷婷老年 | 亚洲狠狠综合久久| 午夜视频久久久久一区| 亚洲AV成人无码久久精品老人| 99久久99久久精品国产片果冻| 久久人爽人人爽人人片AV| 久久人人爽人爽人人爽av| 无码人妻少妇久久中文字幕蜜桃| 久久99精品九九九久久婷婷| 区久久AAA片69亚洲| 久久综合成人网| 久久se这里只有精品| 亚洲午夜精品久久久久久人妖| 99久久777色| 国产精品久久网| 婷婷久久综合九色综合98| 久久精品国产精品青草app| 国产成人精品免费久久久久| 97久久国产综合精品女不卡| 久久这里的只有是精品23| 久久亚洲国产成人精品无码区| 国产精品一区二区久久精品无码 | 亚洲国产成人久久综合一| 国内精品久久久久影院优| 亚洲午夜精品久久久久久人妖| 久久精品女人天堂AV麻| 久久久久久曰本AV免费免费| 久久精品www人人爽人人| 久久综合九色综合97_久久久| 久久午夜综合久久| 久久久久久国产精品无码超碰| 精品久久久久久无码免费| 久久久午夜精品| 久久久久99精品成人片| 久久精品嫩草影院| 69久久精品无码一区二区| 97超级碰碰碰碰久久久久| 久久婷婷成人综合色综合| 亚洲va久久久久|