zoukankan      html  css  js  c++  java
  • 复习题之单词查找树

    1729 单词查找树 2000年NOI全国竞赛

     时间限制: 2 s
     空间限制: 128000 KB
     题目等级: 大师 Master
     
     
    题目描述 Description

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

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

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

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

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

    输入描述 Input Description

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

    输出描述 Output Description

    该文件中仅包含一个整数和一个换行/回车符。该整数为单词列表对应的单词查找树的节点数。

    样例输入 Sample Input

    A

    AN

    ASP

    AS

    ASC

    ASCII

    BAS

    BASIC

    样例输出 Sample Output

    13

     分类标签 Tags 
     
    大陆地区 NOI全国竞赛 2000年
     
    /*
    所有的单词按字典序排序之后,
    计算相邻单词不一致片段的长度。 
    */
    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    int n=0,ans;
    string ss[7000];
    int main()
    {
        while(cin>>ss[++n]);
        n--;
        sort(ss+1,ss+n+1);
        ans=ss[1].length();
        for(int i=2;i<=n;i++)
        {
            int j=0;
            while(ss[i][j]==ss[i-1][j]&&j<ss[i-1].length())j++;
            ans+=ss[i].length()-j;
        }
        printf("%d
    ",ans+1);
        return 0;
    }
  • 相关阅读:
    探测行星-搜寻外星行星
    NLM非局部均值算法相关
    LBP纹理特征
    IPOL图像处理分析经典在线(文献+源码)
    Halcon学习之四:有关图像生成的函数
    Halcon学习之三:有关图像通道的函数
    Halcon学习之二:摄像头获取图像和相关参数
    Halcon学习之边缘检测函数
    Halcon学习之一:查询图像参数
    Halcon学习之两幅图像处理
  • 原文地址:https://www.cnblogs.com/EvilEC/p/6855160.html
Copyright © 2011-2022 走看看