1337:【例3-2】单词查找树

简介: 1337:【例3-2】单词查找树

时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

在进行文法分析的时候,通常需要检测一个单词是否在我们的单词列表里。为了提高查找和定位的速度,通常都画出与单词列表所对应的单词查找树,其特点如下:

1.根结点不包含字母,除根结点外每一个结点都仅包含一个大写英文字母;

2.从根结点到某一结点,路径上经过的字母依次连起来所构成的字母序列,称为该结点对应的单词。单词列表中的每个单词,都是该单词查找树某个结点所对应的单词;

3.在满足上述条件下,该单词查找树的结点数最少。

4.例如图3-2左边的单词列表就对应于右边的单词查找树。注意,对一个确定的单词列表,请统计对应的单词查找树的结点数(包含根结点)。

【输入】

为一个单词列表,每一行仅包含一个单词和一个换行/回车符。每个单词仅由大写的英文字母组成,长度不超过63个字母 。文件总长度不超过32K,至少有一行数据。

【输出】

仅包含一个整数,该整数为单词列表对应的单词查找树的结点数。

【输入样例】

A

AN

ASP

AS

ASC

ASCII

BAS

BASIC

【输出样例】

13

1. #include <iostream>
2. #include <cstdio>
3. #include <algorithm>
4. using namespace std;
5. string s[10000];
6. int main()
7. {
8.  int n=0,cnt=0;
9.  while(cin>>s[n++]);
10.   n--;
11.   sort(s,s+n);
12.   cnt=s[0].length();
13.   for(int i=1;i<n;i++){
14.     unsigned int len=0;
15.     while(len<s[i-1].length() && len<s[i].length() && s[i-1][len]==s[i][len])
16.       len++;
17.     cnt+=s[i].length()-len;
18.   }
19.   cout<<cnt+1<<endl;  
20. return 0;
21. }


相关文章
|
7月前
|
算法
二叉搜索树,穷举(全排列)
二叉搜索树,穷举(全排列)
|
8月前
|
存储 C++
leetcode-208:实现 Trie (前缀树/字典树)
leetcode-208:实现 Trie (前缀树/字典树)
58 0
|
存储 Java
Java数据结构之第十五章、Trie(前缀树/单词查找树)
1.前缀树的概念:前缀树又叫字典树或单词查找树(高效的存储和查找字符串集合的数据结构)。2.3.存储形式:存储的字符串可能:全是 小写字母 或全是 大写字母 或全是 数字 或全是 0和1。它是一棵,每个代表一个,从。字典树的根节点不包含字符,每个子节点代表一个字符,从根节点到任意一个节点所经过的路径上的字符连接起来即为该节点所代表的字符串。每个节点可以存储一个或多个字符串,通常使用一个标志来标记一个节点代表的字符串是否存在。当需要在一组字符串中查找某个字符串时,可以利用字典树来实现高效的查找操作。
85 0
|
存储 机器学习/深度学习 算法
|
存储 自然语言处理 算法
字典树详解
字典树,顾名思义,是关于“字典”的一棵树。即:它是对于字典的一种存储方式(所以是一种数据结构而不是算法)。
182 0
字典树详解
|
存储
LeetCode——819. 最常见的单词
LeetCode——819. 最常见的单词
61 0
C/C++编程题之句子逆序
C/C++编程题之句子逆序
AcWing 775. 倒排单词
AcWing 775. 倒排单词
77 0
AcWing 775. 倒排单词
|
Java C++
字典树(前缀树)
字典树:又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。
115 0

热门文章

最新文章

下一篇
开通oss服务