博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dominating Patterns
阅读量:5969 次
发布时间:2019-06-19

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

题目链接:http://vjudge.net/problem/36265

#include
#define N 200using namespace std;const int maxnode=11000;const int sigma_size=26;int res[N];struct AC_Automata{ int ch[maxnode][sigma_size]; int val[maxnode]; /// 每个字符串的结尾结点都有一个非0的val int f[maxnode]; /// fail函数 int last[maxnode]; /// last[i]=j表j节点表示的单词是i节点单词的后缀,且j节点是单词节点 int sz; ///初始化0号根节点的相关信息 void init() { sz=1; memset(ch[0],0,sizeof(ch[0])); memset(res,0,sizeof res); val[0]=0; } ///Insert负责构造ch与val数组 ///插入字符串,v必须非0表示一个单词节点 void Insert(char *s,int v) { int n=strlen(s),u=0; for(int i=0; i
q; last[0]=f[0]=0; for(int i=0; i
0 void print(int i) { if(val[i]) { res[val[i]]++; print(last[i]); } }};AC_Automata ac;char word[N][N/2];char op[1000005];int main(){ //freopen("C:\\Users\\acer\\Desktop\\in.txt","r",stdin); int n; while(scanf("%d",&n)!=EOF&&n) { ac.init(); for(int i=1;i<=n;i++) { scanf("%s",&word[i]); ac.Insert(word[i],i); } ac.getFail(); scanf("%s",op); ac.Find(op); int maxn=-1; for(int i=1;i<=n;i++) if(res[i]>maxn) maxn=res[i]; printf("%d\n",maxn); int c=0; for(int i=1;i<=n;i++) { if(res[i]==maxn) { if(c) puts(""); c++; printf("%s",word[i]); } } printf("\n"); } return 0;}

 

转载于:https://www.cnblogs.com/wuwangchuxin0924/p/6023703.html

你可能感兴趣的文章
ajaxSetup
查看>>
什么心态阻碍了你职业的发展
查看>>
亚马逊给警察局装备了人脸识别系统就万事大吉了?没那么容易
查看>>
Python手绘图了解一下!
查看>>
wxPython和PyQt谁才是最赞的Python GUI库?
查看>>
简单工厂模式--加减乘除运算
查看>>
智能语音机器人市场对手如此多,微服网络如何更胜一筹
查看>>
linux下设置代理
查看>>
outlook自定义邮件提示声音以及设置接收邮件的间隔时间
查看>>
值传递、指针传递、引用传递的区别
查看>>
facebook 分享,遇到的错误
查看>>
svn 部署问题总结
查看>>
我的友情链接
查看>>
一个用了统计CPU 内存 硬盘 使用率的shell脚本
查看>>
如何恢复默认域策略和默认域控制器策略
查看>>
笔记本进水
查看>>
Nginx配置文件nginx.conf (Apache)
查看>>
jquery和JavaScript区别
查看>>
pxe方式安装gentoo
查看>>
Android机器人电池插件源码
查看>>