zoukankan      html  css  js  c++  java
  • hdu-1251

    思路:

    Trie树模板的小变形,在模板中有一个思维拓展的点要值得我们注意,就是每一个节点的e值,在本题中他们不再用来标记单词的结尾,而是用来计数,因为对于Trie树的某一个确定的位置,一个给定的单词只能走过一遍,因此这样记录可以确定一个位置被多少个单词给“经过”,然后找前缀的时候只要遍历到的最后一个字母所在的位置,输出他的count即可。

    AC代码:

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    using namespace std;
    
    struct node
    {
        int e;
        struct node* next[26];
        node()
        {
            e = 0;
            for(int i = 0;i <= 25;i++)
                next[i] = NULL;
        }
    };
    node* root;
    char str[100007][17];
    char cs[100007][17];
    
    void Insert(char* s)
    {
        node* p = root;
        for(;*s != '';s++)
        {
            int n = *s-'a';
            if(p->next[n] == NULL)
                p->next[n] = new node();
            p = p->next[n];
            p->e++;
        }
    }
    
    int find(char* s)
    {
        node* p = root;
        for(;*s!='';s++)
        {
            int n = *s-'a';
            if(p->next[n] == NULL) return 0;
            p = p->next[n];
        }
        return p->e;
    }
    
    int main()
    {
        int i,j;
        i = 0;
        j = 0;
        root = new node();
        while(gets(str[i]),strcmp(str[i],""))
            Insert(str[i++]);
        while(scanf("%s",cs[j]) != EOF)
            cout<<find(cs[j++])<<endl;
        return 0;
    }
  • 相关阅读:
    ajax post 时 form数据serialize()
    dapper 自定义数据库字段和代码中Model字段不一致时候的mapping方法
    TImage 的一些操作
    AOP
    SSL、数字签名、CA 工作原理
    RESTFUL
    tomcat
    Hibernate
    设计模式
    Spring配置
  • 原文地址:https://www.cnblogs.com/immortal-worm/p/5197133.html
Copyright © 2011-2022 走看看