• HDU1251(字典树)


    统计难题

    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)
    Total Submission(s): 35179    Accepted Submission(s): 13183


    Problem Description

    Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
     

    Input

    输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.

    注意:本题只有一组测试数据,处理到文件结束.
     

    Output

    对于每个提问,给出以该字符串为前缀的单词的数量.
     

    Sample Input

    banana
    band
    bee
    absolute
    acm
     
    ba
    b
    band
    abc
     

    Sample Output

    2
    3
    1
    0
     

    Author

    Ignatius.L

    字典树。

    交G++不停MLE是什么鬼,交C++才AC。。。

     1 //2016.10.7
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstdlib>
     5 #include <cstring>
     6 
     7 using namespace std;
     8 
     9 struct node//26叉树,num为到该节点截止的前缀有多少个
    10 {
    11     node* ch[26];
    12     int num;
    13     node(){
    14         num = 0;
    15         for(int i = 0; i < 26; i++)
    16               ch[i] = NULL;
    17     }
    18 };
    19 
    20 node *root = NULL;
    21 char s[15];
    22 
    23 void Insert(char *s)
    24 {
    25     node* cur = root;
    26     cur->num++;
    27     for(int i = 0; i < strlen(s); i++)
    28     {
    29         int tmp = s[i]-'a';
    30         if(cur->ch[tmp] == NULL)
    31               cur->ch[tmp] = new node;
    32         cur = cur->ch[tmp];
    33         cur->num++;
    34     }
    35 }
    36 
    37 int query(char *s)
    38 {
    39     node *cur = root;
    40     for(int i = 0; i < strlen(s); i++)
    41     {
    42         int tmp = s[i]-'a';
    43         if(cur->ch[tmp] == NULL)return 0;
    44         cur = cur->ch[tmp];
    45     }
    46     return cur->num;
    47 }
    48 
    49 int main()
    50 {
    51     root = new node;
    52     while(gets(s), strcmp(s, "")){
    53         Insert(s);
    54     }
    55     while(scanf("%s", s)!=EOF){
    56         printf("%d
    ", query(s));
    57     }
    58 
    59     return 0;
    60 }
  • 相关阅读:
    2.4.4.1、Django新建APP(acounts)
    2.4.3、Django用户权限控制
    2.4.2、Django处理登录和注销
    2.4.1、Django使用内置的Admin管理用户
    2.4、使用Django自带的admin用户管理,权限管理
    2.3、django项目对数据库的操作
    2.2、创建第一个Django项目
    2、Django框架介绍
    github设置添加SSH(转)
    form表单回车提交问题
  • 原文地址:https://www.cnblogs.com/Penn000/p/5936223.html
Copyright © 2020-2023  润新知