在进行文法分析的时候,通常需要检测一个单词是否在我们的单词列表里。为了提高查找和定位的速度,通常都画出与单词列表所对应的单词查找树,其特点如下:
1.根结点不包含字母,除根结点外每一个结点都仅包含一个大写英文字母;
2.从根结点到某一结点,路径上经过的字母依次连起来所构成的字母序列,称为该结点对应的单词。单词列表中的每个单词,都是该单词查找树某个结点所对应的单词;
3.在满足上述条件下,该单词查找树的结点数最少。

注意,对一个确定的单词列表,请统计对应的单词树的结点数(包含根结点)。

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

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

输入样例
Copy
A
AN
ASP
AS
ASC
ASCII
BAS
BASIC
输出样例
Copy
13

#include <bits/stdc++.h>
using namespace std;int main()
{string c[100005];int i=0;while(cin>>c[i++]);sort(c,c+i);int s=c[0].size();for(int j=1;j<i;j++){int k=0,len=c[j].size();while(c[j][k]==c[j-1][k]) k++;s+=len-k;}cout<<s+1;return 0;
}

对所有单词(字符串)排序,s先设为第一个单词的长度,然后从第二个单词开始依次与前一个单词进行比较,将该单词与前一个单词不同的后边一部分的长度加到s上,再加上根结点,最终结果即为需要的结点数。

单词树(最优二叉树)相关推荐

  1. 哈夫曼编码(基于哈夫曼树-最优二叉树,不唯一)、B树(b-树)、B+树

    整合自: http://blog.csdn.net/shuangde800/article/details/7341289 http://www.cnblogs.com/Jezze/archive/2 ...

  2. 树------最优二叉树

    哈夫曼树是带权路径最小的一种特殊二叉树,所以也称最优二叉树. 在这里不讨论基本概念如如何计算路径等,而只着重于树的创建,具体过程让我们举例而言. 其基本的原理为:将所有节点一开始都视为森林,每次从森林 ...

  3. 数据结构与算法之Huffman tree(赫夫曼树 / 霍夫曼树 / 哈夫曼树 / 最优二叉树)

    目录 赫夫曼树概述 定义 构造赫夫曼树步骤 代码实现 赫夫曼树概述 HuffmanTree因为翻译不同所以有其他的名字:赫夫曼树.霍夫曼树.哈夫曼树 赫夫曼树又称最优二叉树,是一种带权路径长度最短的二 ...

  4. 哈夫曼树-最优二叉树

    # 定义 1. 路径:结点中一个结点到另一个结点的通路(线)叫做路径 2. 路径长度:结点到另一个结点,线的累加和 3. 权:结点带有的数值 4. 带权路径长度:权×路径长度 最优二叉树指的是带权路径 ...

  5. java 实现最优二叉树_哈夫曼树(最优二叉树) - Java实现

    简介 哈夫曼树(Huffman)树又称最优二叉树,是指对于一组带有确定权值的叶子结点所构造的具有带权路径长度最短的二叉树.从树中一个结点到另一个结点之间的分支构成了两结点之间的路径,路径上的分支个数称 ...

  6. 哈夫曼树 (最优二叉树)

  7. 最优二叉树(哈夫曼树)知识点

    路径:在一棵树中从一个结点往下到孩子或孙子结点之间的通路 结点的路径长度:从根节点到该节点的路径上分支的数目 树的路径长度:树中每个结点的路径长度之和 结点的权:给树中的结点赋予一个某种含义的值,则该 ...

  8. 哈夫曼树(最优二叉树)(c/c++)

    哈夫曼编码 halfman! halfman! 半人万岁!(来自权力的游戏 Tyrion Lannister) huffman coding哈夫曼编码的核心是构造哈夫曼树─即最优二叉树,带权路径长度最 ...

  9. 霍夫曼树(最优二叉树)的实现

    文章目录 一.相关概念 1.节点的路径及路径长度 2.节点的带权路径长度 3.树的带权路径长度 4.霍夫曼树 二.构建步骤与图解 1.构建步骤 2.图解 三.代码实现 1.创建节点类: 2.创建霍夫曼 ...

最新文章

  1. 轮播切换_javascript基础(一)——轮播图
  2. 他们爬了7000家创业公司数据,发现这些领域没那么容易应用AI
  3. ui设计看的书_5本关于UI设计的书
  4. 澳国立计算机录取分数,澳洲出国:2018年澳洲国立大学对高考成绩的本科录取分数线(多图)...
  5. Springboot高级特性——缓存
  6. 情爱宝典:识破男女间的“放电”信号
  7. HTTP中GET与POST的区别,99 %的人都理解错了
  8. linux怎样判断线程是否暂停_怎样寻找合适的创业项目?如何判断一个创业项目是否靠谱?...
  9. android消息发送字符串,Android aSmack-如何对文件发送进行自定义消息...
  10. android模拟器登录用户,如何在模拟器上登录小米账号的游戏
  11. linux应用程序开发指南-开发工具介绍
  12. SG90舵机的电路连接和驱动(树莓派)
  13. 北斗通讯协议4.0 java_北斗4.0协议讲解.doc
  14. 新手小白如何画中世纪骑士铠甲?有什么需要注意?
  15. excal怎么设置模板阈值
  16. 宝宝出生前需要准备的用品
  17. C语言基础——数据输入输出
  18. 是时候给出休谟问题的数学推导了
  19. 利用Excel计算DAU、商品转化率和ARPU值等
  20. CRC16 - CRC64 的碰撞测试

热门文章

  1. Seuic手持终端WinCE程序开发及应用(C#)
  2. 2021-2027全球与中国变容二极管市场现状及未来发展趋势
  3. 商业源码网 java_java新闻发布系统JAVA商业源码下载
  4. [Vue warn]: Error in v-on handler (Promise/async): “TypeError: Cannot read property ‘status‘ of 问题详解
  5. 什么叫精通C/C++(CSDN回帖语录)
  6. 文件管理-索引文件结构
  7. MAC安装Eclipse及对其进入相关配置
  8. 东南大学计算机系分数,东南大学2018本一批次分省分专业分数线
  9. 【青少年编程】【Scratch】01 运动模块
  10. C++学习笔记—模板与STL