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

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

HDU-2222 Keywords Search

2019-11-14 09:48:29
字體:
來源:轉載
供稿:網友

題目鏈接:http://acm.hdu.edu.cn/showPRoblem.php?pid=2222 思路: 題目大意是,提供n個單詞以及一段話,問在這段話中所給單詞在文章中出現的個數。使用AC自動機算法來解題。

AC代碼:

#include<cstdio>#include<cstring>#include<queue>using namespace std;const int maxn=1000000;char str[maxn+10];struct node{ int count;//標識是否為葉子結點 struct node *next[26]; struct node *fail;//失敗指針 void init()//初始化函數 { for(int i=0;i<26;i++) next[i]=NULL; count=0; fail=NULL; } }*root;//構造樹TRIEvoid insert(){ node *p=root; int len=strlen(str); for(int i=0;i<len;i++) { int pos=str[i]-'a'; if(p->next[pos]==NULL) { p->next[pos]=new node; p->next[pos]->init(); p=p->next[pos]; } else p=p->next[pos]; } p->count++;//標識為單詞尾部 } //構造失敗指針 void getfail() { node *p=root,*son,*temp; queue<struct node *>que; que.push(p);//root入隊 while(!que.empty()) { temp=que.front(); que.pop(); for(int i=0;i<26;i++) { son=temp->next[i]; if(son!=NULL) { if(temp==root) son->fail=root; else { p=temp->fail; while(p) { if(p->next[i])//如果trie中有相同字母指向該字母的失敗指針 { son->fail=p->next[i]; break; } p=p->fail; } if(!p) son->fail=root; } que.push(son); } } } } //查找有多少個字符串在所給段落中出現 void query() { int ans=0; int len=strlen(str); node *p=root,*temp; for(int i=0;i<len;i++) { int pos=str[i]-'a'; while(!p->next[pos]&&p!=root) p=p->fail; p=p->next[pos]; if(!p) p=root; temp=p; while(temp!=root) { if(temp->count>=0)//找到改串單詞尾部 { ans+=temp->count; temp->count=-1;//標識該單詞找過,避免重復計算 } else break; temp=temp->fail; } } printf("%d/n",ans);//輸出個數 } int main() { int m,n; scanf("%d",&m); while(m--) { root=new node; root->init(); root->fail=NULL; scanf("%d",&n); getchar(); for(int i=0;i<n;i++) { scanf("%s",&str); insert();//構造TRIE } getfail();//建立失敗指針 scanf("%s",&str); query(); } return 0; }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 免费一级特黄毛片视频 | 一级黄色免费电影 | av国产在线被下药迷网站 | 热re91久久精品国产99热 | 在线免费观看日韩视频 | 国产精品一区二区三区99 | 免费a级毛片永久免费 | 国产精品久久国产精品 | 色中色激情影院 | 久综合色 | 日本一道aⅴ不卡免费播放 久久久久久久高清 | 久久精品日产第一区二区三区 | 九色在线78m | 欧美精品免费一区二区三区 | 国产91亚洲精品久久久 | 蜜桃视频在线免费播放 | 精品一区二区电影 | 99在线精品视频免费观看20 | 羞羞羞网站 | 久久久久久久免费看 | 麻豆视频国产在线观看 | 欧美日韩一区三区 | 久久久久久久久久久久久久国产 | 久久99精品久久久久久秒播蜜臀 | 午夜视频在线观 | 黄色一级片毛片 | 香蕉秀 | 一色桃子av大全在线播放 | 99在线在线视频免费视频观看 | 色综合久久久久综合99 | a视频网站 | 久久99综合久久爱伊人 | 国产一区网址 | 国产一区二区三区四区五区在线 | a黄色片| 日本黄色免费观看视频 | 中国hdxxxx护士爽在线观看 | 亚洲一区二区免费 | 国产福利视频在线观看 | 中文字幕极速在线观看 | 一边吃奶一边插下面 |