• Hat’s Words hdu-1247


    就是查找这个单词能不能有两个单词组成,简单的字典树题目
    //////////////////////////////////////////////////////////////
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;

    #define maxn 26

    struct node
    {
        int sum;
        node *next[26];
    };

    node *root;
    char a[50005][30];

    void Insert(char *s);//建立字典树
    bool Find(char *s);
    bool Query(char *s);

    int main()
    {
        int i, n=0;

        root = new node();

        for(i=0; scanf("%s", a[i]) != EOF; i++)
            Insert(a[i]);
       
        for(n=1, i=0; i<=n; i++)
        {
            if(Query(a[i]))
                printf("%s ", a[i]);
        }

        return 0;
    }

    void Insert(char *s)
    {
        node *p = root;

        for(int i=0; s[i]; i++)
        {
            int k = s[i] - 'a';

            if(!p->next[k])
                p->next[k] = new node();
            p = p->next[k];
        }

        p->sum = 1;
    }
    bool Find(char *s)
    {
        node *p = root;

        for(int i=0; s[i]; i++)
        {
            int k = s[i] - 'a';

            if(!p->next[k])
                return false;
            p = p->next[k];
        }

        if(p->sum)return true;
        return false;
    }
    bool Query(char *s)
    {
        node *p = root;

        for(int i=0; s[i]; i++)
        {
            int k = s[i] - 'a';

            p = p->next[k];

            if(p->sum && Find(s+i+1))
                return true;
        }

        return false;

    } 

  • 相关阅读:
    epoll 使用详解
    STL 较详尽总结
    可视化对比排序算法
    统治世界的十大算法
    Vector Demo
    Git远程操作(附重要原理图)
    Wireshark(五):TCP窗口与拥塞处理
    Wireshark(四):网络性能排查之TCP重传与重复ACK
    Wireshark(三):应用Wireshark IO图形工具分析数据流
    Wireshark(二):应用Wireshark观察基本网络协议
  • 原文地址:https://www.cnblogs.com/liuxin13/p/4674319.html
Copyright © 2020-2023  润新知