• 字典树Trie练习 HihoCoder 1014


    题目链接


    字典树模板题

    测试模板

    此题这里允许单词重复,(读错题WA好多

    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    const int N = 1e5 + 5;
    struct Trie
    {
        int next[N*30][26], sz[N*30*26], ed[N*30*26], pos, root;
        int newnode()
        {
            for(int i = 0; i < 26; i++)
                next[pos][i] = -1;
            sz[pos] = 0;
            ed[pos] = 0;
            return pos++;
        }
        void init()
        {
            pos = 0;
            root = newnode();
        }
        void insert(string s)
        {
            int n = s.size();
            int now = root;
            sz[now]++;
            for(int i = 0; i < n; i++)
            {
                int b = s[i]-'a';
                if(next[now][b] == -1) next[now][b] = newnode();
                now = next[now][b];
                sz[now]++;
            }
            /*if(ed[now] == 0)
                ed[now] = 1;
            else
            {
                int now = root;
                sz[now]--;
                for(int i = 0; i < n; i++)
                {
                    int b = s[i]-'a';
                    now = next[now][b];
                    sz[now]--;
                }
            }*/
        }
        int query(string s)
        {
            int n = s.size();
            int now = root;
            for(int i = 0; i < n; i++)
            {
                int b = s[i]-'a';
                if(next[now][b] == -1) return 0;
                now = next[now][b];
            }
            return sz[now];
        }
    };
    Trie t;
    int n,m;
    string tmp;
    int main()
    {
        t.init();
        scanf("%d", &n);
        for(int i = 0; i < n; i++)
        {
            cin>>tmp;
            t.insert(tmp);
        }
        scanf("%d", &m);
        for(int i = 0; i < m; i++)
        {
            cin>>tmp;
            printf("%d
    ", t.query(tmp));
        }
        return 0;
    }
    
  • 相关阅读:
    学习!
    第10天:自适应高度
    第9天:第一个CSS布局实例
    nodejs in windows
    网络驱动器无法显示SVN图标问题
    nodejs获取文件修改时间
    gears旅程
    @import和link标签的差别
    evernote诡异bug
    让你的chromium支持支付宝
  • 原文地址:https://www.cnblogs.com/Alruddy/p/7467487.html
Copyright © 2020-2023  润新知