博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3065 病毒侵袭持续中
阅读量:5171 次
发布时间:2019-06-13

本文共 1581 字,大约阅读时间需要 5 分钟。

AC自动机

代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long longusing namespace std;const int INF=0x3f3f3f3f;const int N=1005;const int M=505;const int K=26;struct nodeTrie{ nodeTrie() { v=0; fail=NULL; for(int i=0;i
next[s[i]-'A']==NULL) p->next[s[i]-'A']=new nodeTrie; p=p->next[s[i]-'A']; } (p->v)=k;}void init(int n){ root=new nodeTrie; for(int i=1;i<=n;++i) { gets(s[i]); addWord(root,s[i],i); }}void bfs(nodeTrie *p){ p->fail=root; queue
qt; qt.push(p); while(!qt.empty()) { nodeTrie *y; nodeTrie *x=qt.front();qt.pop(); for(int i=0;i
next[i]!=NULL) { qt.push(x->next[i]); if(x==root) {x->next[i]->fail=root;continue;} y=x->fail; while(y!=root&&y->next[i]==NULL) y=y->fail; if(y->next[i]!=NULL) x->next[i]->fail=y->next[i]; else x->next[i]->fail=root; } }}int match(nodeTrie *p,char *s){ int wordCount=0; int l=0; while(s[l]!='\0') { if(s[l]<'A'||s[l]>'Z') {p=root;++l;continue;} while(p->next[s[l]-'A']==NULL&&p!=root) p=p->fail; if(p->next[s[l]-'A']!=NULL) p=p->next[s[l]-'A']; ++l; nodeTrie *fp=p; while(fp!=root) { if((fp->v)>0) ++num[fp->v]; fp=fp->fail; } } return wordCount;}int main(){ //freopen("data.in","r",stdin); int n; while(scanf("%d ",&n)!=EOF) { init(n); bfs(root); gets(web); memset(num,0,sizeof(num)); match(root,web); for(int i=1;i<=n;++i) if(num[i]>0) printf("%s: %d\n",s[i],num[i]); } return 0;}

  

转载于:https://www.cnblogs.com/liulangye/archive/2013/03/22/2975950.html

你可能感兴趣的文章
二叉树(三)
查看>>
linux加密文件系统 fsck 无法修复一例
查看>>
【linux配置】VMware安装Redhat6.5
查看>>
AI自主决策——有限状态机
查看>>
iframe父子窗口取值
查看>>
利用Python进行数据分析_Pandas_数据结构
查看>>
《计算机组成原理》第6章:总线
查看>>
关于String str =new String("abc")和 String str = "abc"的比较
查看>>
Android软件架构及子系统介绍
查看>>
Java命名规范
查看>>
小学生算术
查看>>
BZOJ2823: [AHOI2012]信号塔
查看>>
mysql查询前几条记录
查看>>
java二分法查找实现代码
查看>>
体系编程、SOC编程那些事儿
查看>>
mysql索引的艺术
查看>>
IBM RSA 的语言设置
查看>>
《http权威指南》阅读笔记(二)
查看>>
faster r-cnn cudnn版本不兼容问题
查看>>
[置顶] ListBox控件的数据绑定
查看>>