字典(Tire树)
4189 字典
最经,skyzhong得到了一本好厉害的字典,这个字典里整整有n个单词(1<=n<=200000)
现在skyzhong需要在字典里查询以某一段字母开头的单词
如:skyzhong想查询a
那么只要是a开头的单词就可以了
skyzhong只想知道里面有没有这一个单词(因为没有他就不查了)
若有,请输出YES。若没有,请输出NO
第一行一个数n
第二行到第n+1行,一行一个字符串
再下一行一个数m,表示skyzhong想要查询的次数
接着m行,一行一个字符串,表示skyzhong想要查的东西
共m行,若有这字串输出YES,否则输出NO
3
asd
asfdghj
asfd
3
asd
asdghj
asf
YES
NO
YES
字符串只有小写字母,且长度≤8
//字典字典字典树
//用指针写真好啊,好写还容易理解。(就是别忘了更新指针!!卡死我了!)
#include<iostream>
#include<cstdio>
#include<cstring> using namespace std;
int n,m;
char s[];
struct trie
{
trie *next[];
}*root; trie *cr()
{
trie *pt=new trie;
memset(pt->next,,sizeof pt->next);
return pt;
} void insert(char *word)//插入单词
{
trie *p=root;
char *q=word;
while(*q)
{
int id=*q-'a';
if(p->next[id]==NULL)
p->next[id]=cr();
p=p->next[id];
q++;
}
} bool search(char *word)
{
trie *p=root;
char *q=word;
int now=;
while(*q)
{
int id=*q-'a';
if(p->next[id])
{
q++;
p=p->next[id];//更新指针AAAA!
continue;//能找到就继续
}
return false;
}
return true;
} int main()
{
scanf("%d",&n);
root=cr();
for(int i=;i<=n;i++)
{
scanf("%s",s);
insert(s);
}
scanf("%d",&m);
for(int i=;i<=m;i++)
{
scanf("%s",s);
if(search(s)) printf("YES\n");
else printf("NO\n");
}
return ;
}
心若向阳,无言悲伤
字典(Tire树)的更多相关文章
- [数据结构]字典树(Tire树)
概述: Trie是个简单但实用的数据结构,是一种树形结构,是一种哈希树的变种,相邻节点间的边代表一个字符,这样树的每条分支代表一则子串,而树的叶节点则代表完整的字符串.和普通树不同的地方是,相同的字符 ...
- 海量数据处理之Tire树(字典树)
参考博文:http://blog.csdn.net/v_july_v/article/details/6897097 第一部分.Trie树 1.1.什么是Trie树 Trie树,即字典树,又称单词查找 ...
- Tire树(字典树)
from:https://www.cnblogs.com/justinh/p/7716421.html Trie,又经常叫前缀树,字典树等等.它有很多变种,如后缀树,Radix Tree/Trie,P ...
- 中文分词系列(二) 基于双数组Tire树的AC自动机
秉着能偷懒就偷懒的精神,关于AC自动机本来不想看的,但是HanLp的源码中用户自定义词典的识别是用的AC自动机实现的.唉-没办法,还是看看吧 AC自动机理论 Aho Corasick自动机,简称AC自 ...
- 中文分词系列(一) 双数组Tire树(DART)详解
1 双数组Tire树简介 双数组Tire树是Tire树的升级版,Tire取自英文Retrieval中的一部分,即检索树,又称作字典树或者键树.下面简单介绍一下Tire树. 1.1 Tire树 Trie ...
- Tire树
Trie树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种. 典型应用是用于统计和排序大量的字符串(但不仅限于字符串), 所以经常被搜索引擎系统用于文本词频统计. 字典树(Trie)可以保存 ...
- 基于Tire树和最大概率法的中文分词功能的Java实现
对于分词系统的实现来说,主要应集中在两方面的考虑上:一是对语料库的组织,二是分词策略的制订. 1. Tire树 Tire树,即字典树,是通过字串的公共前缀来对字串进行统计.排序及存储的一种树形结构 ...
- Tire树总结(模板+例题)
题目来自<算法竞赛设计指南> Tire树是一种可以快速查找字符串的数据结构 模板 #include<cstdio> #include<algorithm> #inc ...
- 图解Tire树+代码实现
简介 Trie又称为前缀树或字典树,是一种有序树,它是一种专门用来处理串匹配的数据结构,用来解决一组字符中快速查找某个字符串的问题.Google搜索的关键字提示功能相信大家都不陌生,我们在输入框中 ...
- AC自动机:Tire树+KMP
简介 AC自动机是一个多模式匹配算法,在模式匹配领域被广泛应用,举一个经典的例子,违禁词查找并替换为***.AC自动机其实是Trie树和KMP 算法的结合,首先将多模式串建立一个Tire树,然后结合K ...
随机推荐
- C语言运算符表(优先级)
http://www.is.pku.edu.cn/~qzy/c/operator.htm
- fscanf功能具体解释
cfscanf fscanf fscanf : 格,fscanf格格 :int fscanf(FILE *stream, char *format,[argument...]); int fscanf ...
- EF6.0执行sql存储过程案例
数据填充实体:ZF_Btns; 存储过程名称:test; --方式一: db.Database.SqlQuery<ZF_Btns>("test @Id,@UName output ...
- WCF连接被意外关闭
WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭 在我们开发WCF项目的时候,常常会碰到一些莫名其妙的错误,有时候如果根据它的错误提示信息,一般很难定位到具体的问题所在,而由于W ...
- Web API实现POST报文的构造与推送
ASP.NET Web API实现POST报文的构造与推送 毕设和OAuth协议相关,而要理解OAuth协议就必须理解HTTP GET/POST方法.因此研究了一下如何使用Web API或MVC构 ...
- OSG在WIN与VS中配置与测试
欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/1392531060.html Windo ...
- Easyui布局
Easyui入门视频教程 第03集---Easyui布局 Easyui入门视频教程 第03集---Easyui布局 目录 ----------------------- Easyui入门视频教程 ...
- c# in deep 之使用匿名方法的内联委托操作
匿名方法允许我们指定一个内联委托的操作,为创建委托实例表达式的一部分.其可以对代码进行极度精简,当然可读性变得很差.下面看一个求平方根的例子. List<int> list = new L ...
- storm搭建(1)zookeeper搭建
storm集群的安装我用了三台的虚拟机,ip分别是192.168.9.202和203和204,其中主机是202,两台分机的ip是203和204,之前两台机器的搭建已经完成,这次安装的环境是在204机器 ...
- CLR 的执行模型(2)
第一章 CLR 的执行模型(2) 本篇内容大纲 Framework 类库(Framework Class Library , FCL) 通用类型系统(Common Type System,CTS) 公 ...