zoukankan      html  css  js  c++  java
  • 【CodeVS4189】字典

    Description

    最经,skyzhong得到了一本好厉害的字典,这个字典里整整有n个单词(1<=n<=200000)

    现在skyzhong需要在字典里查询以某一段字母开头的单词

    如:skyzhong想查询a

    那么只要是a开头的单词就可以了

    skyzhong只想知道里面有没有这一个单词(因为没有他就不查了)

    若有,请输出YES。若没有,请输出NO

    Input

    第一行一个数n

    第二行到第n+1行,一行一个字符串

    再下一行一个数m,表示skyzhong想要查询的次数

    接着m行,一行一个字符串,表示skyzhong想要查的东西

    Output

    共m行,若有这字串输出YES,否则输出NO

    Sample Input

    3

    asd

    asfdghj

    asfd

    3

    asd

    asdghj

    asf

    Sample Output

    YES

    NO

    YES

    HINT

    字符串只有小写字母,且长度≤8

    题解

    trie树

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #define N 500010
    using namespace std;
    struct node
    {
        int next[26];
    }trie[N];
    char s[10];
    int topt;
    void add_trie()
    {
        int l=strlen(s),now = 0;
        for (int i=0;i<l;i++)
        {
            int x = s[i]-'a'+1;
            if (trie[now].next[x])
                now = trie[now].next[x];
            else
            {
                trie[now].next[x] = ++topt;
                now = topt;
            }
        }
    }
    int find()
    {
        int l=strlen(s);
        int now = 0,p = 0,sum = 0;
        while (p < l)
        {
            if (!trie[now].next[s[p]-'a'+1])
                return 0;
            else 
            {
                now = trie[now].next[s[p]-'a'+1];
                p++;
            }
        }
        return 1;
    }
    int main()
    {
        int n,m;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            cin>>s;
            add_trie();
        }
        scanf("%d",&m);
        for (int i=1;i<=m;i++)
        {
            cin>>s;
            if (find()) printf("YES
    ");
                else printf("NO
    ");
        }
    }
  • 相关阅读:
    8进阶、M语言对Simulink模型的自动化操作及配置
    7进阶、Simulink回调函数
    6基础、Simulink模型保存为图片
    PCAN-USB
    Unix-Linux编程实践 学习点滴
    学一点吧
    VM中ubuntu已经正确配置了静态IP仍无法上网
    Linux在向磁盘新建文件的时候在系统层面的四步操作
    如何更有人缘?
    我的第一个javascript网页作业
  • 原文地址:https://www.cnblogs.com/liumengyue/p/5468337.html
Copyright © 2011-2022 走看看