|算法讨论|Trie树 学习笔记
来源:互联网 发布:金川公司网络学校 编辑:程序博客网 时间:2024/06/10 17:47
题目
模板及讲解
输入两个整数m,n(m,n<=10),分别代表字典里有m个字符串和有n个查询
接下来m行输入m行字符串,每个字符串长度不超过255,且均为小写字母
接下来n行输入n行询问,如果询问的字符串在字典里,输出1,否则输出0
输入样例
6 4appleappappdlbyubyuyewappewbyyyappdl
输出样例
1101
#include<cstdio> #include<algorithm> #include<cstring> #include<vector> #include<string> #define ms(i,j) memset(i,j, sizeof i); using namespace std; int c[2600][26];//Trie int p[2600];//标记值,为0则是终点 int m,n; int sz = 0; int insert(char *s) { int u = 0;//当前节点 int l = strlen(s); for (int i=0;i<l;i++) { int ch = s[i]-'a'; if (c[u][ch]==0)//没有这个节点 { c[u][ch] = ++sz;//创造这个节点 u = c[u][ch]; }else//向下走 { u = c[u][ch]; } } p[u] = 0; } int check(char *s) { int u = 0;//当前节点 int l = strlen(s); for (int i=0;i<l;i++) { int ch = s[i]-'a'; if (c[u][ch]==0)//没有这个节点那么肯定这个查询不存在 { return false; }else//向下走 { u = c[u][ch]; } } if (p[u]==0) return true;//有结束标记的才是存在的 return false; } int main() { ms(c,0);//初始化Trie ms(p,-1); scanf("%d%d\n", &m ,&n); for (int i=1;i<=m;i++) { char ch[300]; scanf("%s", ch); insert(ch); } for (int i=1;i<=n;i++) { char ch[300]; scanf("%s", ch); if(check(ch)) printf("1\n"); else printf("0\n"); } return 0; }
0 0
- |算法讨论|Trie树 学习笔记
- trie树-《算法导论》学习笔记十四
- |算法讨论|平衡树 学习笔记
- |算法讨论|线段树2 学习笔记
- Trie树学习笔记
- |算法讨论|KMP 学习笔记
- |算法讨论|LCA 学习笔记
- |算法讨论|树链剖分 学习笔记
- |算法讨论|RMQ 学习笔记
- |算法讨论|贪心算法 学习笔记
- |算法讨论|贪心算法 学习笔记
- 算法学习之Trie树
- |算法讨论|线段树1(大白书版本) 学习笔记
- C# 学习笔记:Trie树
- |算法讨论|数论数学 学习笔记
- |算法讨论|拓扑排序 学习笔记
- |算法讨论|2-SAT 学习笔记
- |算法讨论|AC自动机 学习笔记
- Android无法使用localhost去访问本地服务器
- 最大的算式
- Python网络爬虫演示-1
- Eclipse的PropertiesEditor切换大小写
- 2.4MATLAB的数值、变量与表达式
- |算法讨论|Trie树 学习笔记
- TextView 显示某几个文字后突然想换行
- 惊!点击textView会透传竟然是因为这个--android事件传递机制探究
- ionic 命令
- c++reference
- java web中的监听器的基础知识
- Easy UI + Servlet + MySQL 显示数据库里面的记录
- 我的软件工程课目标
- 括号配对