cogs 293. [NOI 2000] 单词查找树 Trie树字典树
293. [NOI 2000] 单词查找树
★★☆ 输入文件:trie.in 输出文件:trie.out 简单对比
时间限制:1 s 内存限制:128 MB
在进行文法分析的时候,通常需要检测一个单词是否在我们的单词列表里。为了提高查找和定位的速度,通常都要画出与单词列表所对应的单词查找树,其特点如下:
- 根节点不包含字母,除根节点外每一个节点都仅包含一个大写英文字母;
- 从根节点到某一节点,路径上经过的字母依次连起来所构成的字母序列,称为该节点对应的单词。单词列表中的每个词,都是该单词查找树某个节点所对应的单词;
- 在满足上述条件下,该单词查找树的节点数最少。
单词列表对应的单词查找树
A
AN
ASP
AS
ASC
ASCII
BAS
BASIC![]()
对一个确定的单词列表,请统计对应的单词查找树的节点数(包括根节点)
[输入文件]
该文件为一个单词列表,每一行仅包含一个单词和一个换行/回车符。每个单词仅由大写的英文字符组成,长度不超过63个字符。文件总长度不超过32K,至少有一行数据。
[输出文件]
该文件中仅包含一个整数和一个换行/回车符。该整数为单词列表对应的单词查找树的节点数。
[输入输出文件样例]
Input
A
AN
ASP
AS
ASC
ASCII
BAS
BASIC
Output
13 啊 我太蒟了 又来刷水题了
这一道题就是一个字典树的模板题而已 在统计点的个数的时候只要每一次新开一个节点 ans就++ 注意ans在本题的题目背景下,应初始值设置为1
因为你看题目中给你的那一个图 ,还有一个么有实际意义但是占了一个位置的Root
#include<bits/stdc++.h>
using namespace std;
struct Trie{
Trie* son[];
bool f;
Trie(){
for(int i=;i<=;i++) son[i]=NULL;
f=false;
}
}Root;
int main()
{
freopen("trie.in","r",stdin);
freopen("trie.out","w",stdout);
char s[];
int ans=;
while(scanf("%s",s)!=EOF)
{
int len=strlen(s);
Trie* p=&Root;
for(int i=;i<len;i++)
{
int x=s[i]-'A';
if(p->son[x]==NULL)
{
p->son[x]=new Trie;
ans++;
}
p=p->son[x];
}
p->f=true;
}
printf("%d\n",ans);
return ;
}
cogs 293. [NOI 2000] 单词查找树 Trie树字典树的更多相关文章
- Trie树也称字典树
Trie树 Trie树也称字典树,因为其效率很高,所以在在字符串查找.前缀匹配等中应用很广泛,其高效率是以空间为代价的. 一.Trie树的原理 利用串构建一个字典树,这个字典树保存了串的公共前缀信息, ...
- 字典树基础进阶全掌握(Trie树、01字典树、后缀自动机、AC自动机)
字典树 概述 字典树,又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它 ...
- Trie(字典树)
没时间整理了,老吕又讲课了@ @ 概念 Trie即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种,典型应用是统计和排序大量的字符串(不限于字符串) Trie字典树主要用于存储字符串, ...
- 字典树&&01字典树专题&&对字典树的理解
对于字典树和01字典树的一点理解: 首先,字典树建树的过程就是按照每个数的前缀来的,如果你要存储一个全小写字母字符串,那么这个树每一个节点最多26个节点,这样的话,如果要找特定的单词的话,按照建树的方 ...
- Trie - leetcode [字典树/前缀树]
208. Implement Trie (Prefix Tree) 字母的字典树每个节点要定义一个大小为26的子节点指针数组,然后用一个标志符用来记录到当前位置为止是否为一个词,初始化的时候讲26个子 ...
- Trie:字典树
简介 \(Trie\),又称字典树或前缀树,是一种有序树状的数据结构,用于保存关联数组,其中的键值通常是字符串. 作用 把许多字符串做成一个字符串集合,并可以对其进行快速查找(本文以求多少个单词是一个 ...
- trie(字典树)原理及C++代码实现
字典树,又称前缀树,是用于存储大量字符串或类似数据的数据结构. 它的原理是利用相同前缀来减少查询字符串的时间. 不同于BST把关键字保存在本结点中,TRIE可以想象成把关键字和下一个结点的指针绑定,事 ...
- [LintCode] Implement Trie 实现字典树
Implement a trie with insert, search, and startsWith methods. Have you met this question in a real i ...
- POJ 2001 Shortest Prefixes 【 trie树(别名字典树)】
Shortest Prefixes Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 15574 Accepted: 671 ...
随机推荐
- ElasticSearch从不懂到会用1—安装篇
连续加班近一个多月,项目终于告一段落了,也腾出时间写一写项目中用到的东西.在这个项目中,我负责的主要是多种业务场景下的数据查询和搜索,其中搜索用到了ElasticSearch搜索引擎.下面主要围绕El ...
- Total Commander 显示文件包含文件名扩展
在默认的 Total Commander 是分开文件名和文件扩展,如果想要让文件名同时显示扩展,可以通过设置合并文件名和扩展两列 点击配置,在选项的制表修改显示 How to configure To ...
- 使用iOSSelect.js实现iOS的select下拉选择日期的联动效果
引入文件: <link rel="stylesheet" href="/static/css/iosSelect.css"> <script ...
- 51nod 1307绳子和重物
1307 绳子与重物 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 有N条绳子编号 0 至 N - 1,每条绳子后 ...
- ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(1)之数据库设计
本文主要讲解本项目网站所应用到的知识点,及数据库的相关设计: 一.知识点 (1)本项目主要采取ASP.NET MVC的编程模式,相信你已经了解到了MVC的具体含义是什么,这里不再赘述,有不了解的朋友, ...
- redisUtil
package com.cinc.ecmp.utils; import org.springframework.beans.factory.annotation.Autowired; import o ...
- WNMP nginx+php5+mysql测试环境安装(Windows7)(二)
3. 安装Zend Optimizer Zend Optimizer对那些在被最终执行之前由Run-Time Complier产生的代码进行优化,提高PHP应用程序的执行速度.一般情况下,执行使用Ze ...
- ZOJ Problem Set - 1090——The Circumference of the Circle
ZOJ Problem Set - 1090 The Circumference of the Circle Time Limit: 2 Seconds Memory Limit: 65 ...
- 浅谈月薪3万 iOS程序员 的职业规划与成长!(进阶篇)
前言: 干了这么多年的iOS,虽然接触了许多七七八八的东西.技术,但是感觉本身iOS却没有什么质的飞越,可能跟自己接触的项目深度有关,于是决定在学习其他技术的同时,加强自己在iOS方面的学习,提高自己 ...
- 使用spring boot中的JPA操作数据库
前言 Spring boot中的JPA 使用的同学都会感觉到他的强大,简直就是神器一般,通俗的说,根本不需要你写sql,这就帮你节省了很多时间,那么下面我们来一起来体验下这款神器吧. 一.在pom中添 ...