zoukankan      html  css  js  c++  java
  • HDU_1247 Hat’s Words(Trie 树)

      Trie水题,将每个单词插入Trie树,然后暴力拆分每个单词到树中查找匹配即可!有几个要注意的细节,代码注释中都标上了。

    My Code:

    #include <iostream>
    #include
    <cstdio>
    #include
    <cstring>

    using namespace std;
    const int MAX = 50007;
    struct node
    {
    int flag;
    node
    * next[26];
    };

    char dis[MAX][30];

    node
    * newnode()
    {
    int i;
    node
    * p = new node;
    p
    ->flag = 0;
    for(i = 0; i < 26; i++)
    p
    ->next[i] = NULL;
    return p;
    }

    void insert(node * root, char *s)
    {
    node
    * p = root;
    int i, len = strlen(s), t;
    for(i = 0; i < len; i++)
    {
    t
    = s[i] - 'a';
    if(p->next[t] == NULL)
    p
    ->next[t] = newnode();
    p
    = p->next[t];
    }
    p
    ->flag = 1;

    }

    int search(node * root, char *s)
    {
    node
    * p = root;
    int i, t, len = strlen(s);
    for(i = 0; i < len; i++)
    {
    t
    = s[i] - 'a';
    if(p->next[t] == NULL)
    return 0;
    p
    = p->next[t];
    }
    if(p->flag)
    return 1;
    return 0;
    }

    int main()
    {
    //freopen("data.in", "r", stdin);
    int n = 0, i, j, k;
    char s1[30], s2[30];
    node
    * root = newnode();
    while(scanf("%s", dis[n]) != EOF)
    {
    insert(root, dis[n]);
    n
    ++;
    }
    for(i = 0; i < n; i++) //拆分
    {
    int len = strlen(dis[i]);
    memset(s1,
    0, sizeof(s1)); //每次置空字符串数组,否则会段错误(这里就是数组溢出)
    for(j = 0; j < len-1; j++)
    {
    s1[j]
    = dis[i][j];
    memset(s2,
    0, sizeof(s2)); //同理
    for(k = j+1; k < len; k++)
    {
    s2[k
    -j-1] = dis[i][k];
    }
    if(search(root, s1) && search(root, s2))
    {
    puts(dis[i]);
    break;
    }
    }

    }
    return 0;
    }
  • 相关阅读:
    驱动模块的加载与卸载
    设备驱动操作函数
    Ubuntu驱动程序开发5-根文件系统构建
    Ubuntu驱动程序开发4-内核移植和配置
    Ubuntu驱动程序开发3-Uboot移植和配置
    bootargs环境变量解析
    Shell脚本(2)
    Shell脚本(1)
    Linux环境变量
    Linux系统中ps -l命令显示的英文含义
  • 原文地址:https://www.cnblogs.com/vongang/p/2148615.html
Copyright © 2011-2022 走看看