zoukankan      html  css  js  c++  java
  • hdu 1251 统计难题

    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
     

    裸trie树 据说是最简单的高级数据结构  传送门

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    
    using namespace std;
    struct trie_node{
        trie_node * next[26];
        bool excit;
        int count;
    }*root;
    trie_node * create_cn()
    {
        trie_node * tp=new(trie_node);
        tp->count=0;
        memset(tp->next,0,sizeof(tp->next));
        tp->excit=0;
        return tp;
    }
    inline void insert(char * word)
    {
        trie_node * p=root;
        char *q=word;
        while(*q)
        {
            int id=*q-'a';
            if(p->next[id]==NULL)
                p->next[id]=create_cn();
            p=p->next[id];
            ++q;
            p->count++;
        }
        p->excit=1;
    }
    int search(char *word)
    {
        trie_node *p=root;
        char *q=word;
        while(*q)
        {
            int id=*q-'a';
            p=p->next[id];
            q++;
            if(p==NULL) return 0;
        }
        return p->count;
    }
    int main()
    {
        root=create_cn();
        char c[12];
        int bz=0;
        while(gets(c))
        {
            if(bz) cout<<search(c)<<endl;
            else{
                if(strlen(c)!=0) insert(c);
                else bz=1;
            }
        }
        return 0;
    }
     
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    Java的内存区域划分
    Java中的浮点型进行四则运算精度丢失的问题
    单例模式的几种写法
    如何掌握一门工具及对工具的认识
    记一个命运多舛的项目总结
    几个超级好用但很少有人知道的 webstorm技巧
    如何自定义中间件,实现业务代码无侵入监控及拦截
    如何减少和处理死锁
    快照读与加锁读
    谈谈Java常用类库中的设计模式
  • 原文地址:https://www.cnblogs.com/ruojisun/p/6290920.html
Copyright © 2011-2022 走看看