• 统计难题


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

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

    注意:本题只有一组测试数据,处理到文件结束. 
    Output对于每个提问,给出以该字符串为前缀的单词的数量. 
    Sample Input

    banana
    band
    bee
    absolute
    acm
    
    ba
    b
    band
    abc

    Sample Output

    2
    3
    1
    0

    字典树模板题
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int tree[1001000][26];
     4 int num[1001000];
     5 int pos = 1;
     6 
     7 void insert(char *s){
     8     int root = 0;
     9     for(int i=0;i<strlen(s);i++){
    10         int n = s[i]-'a';
    11         if(!tree[root][n]){
    12             tree[root][n] = pos++;
    13         }
    14         root = tree[root][n];
    15         num[root]++;
    16     }
    17 }
    18 
    19 int find(char *s){
    20     int root = 0;
    21     for(int i=0;i<strlen(s);i++){
    22         int n = s[i]-'a';
    23         if(!tree[root][n]){
    24             return 0;
    25         }
    26         root = tree[root][n];
    27     }
    28     return num[root];
    29 }
    30 
    31 int main() {
    32     ios::sync_with_stdio(false);
    33     cin.tie(0);
    34     cout.tie(0);
    35     char s[15];
    36     char c;
    37     while(gets(s)){
    38         if(s[0]==NULL)
    39             break;
    40         insert(s);
    41     }
    42     while(gets(s)){
    43         cout<<find(s)<<endl;
    44     }
    45     return 0;
    46 }
  • 相关阅读:
    三种renderman规范引擎的dice对比
    球形环境映射之angular与latlong格式互换
    SharePoint中的ASHX
    如何查看SharePoint未知错误的详细信息
    在SQL Server 2008设置发送邮件步骤详解
    项目管理软件对比
    海外云服务器VPS
    国内和国外域名注册商介绍
    快速将一个表的数据生成SQL插入语句
    使用sql server 链接服务器
  • 原文地址:https://www.cnblogs.com/zllwxm123/p/9293782.html
Copyright © 2020-2023  润新知