码迷,mamicode.com
首页 > 其他好文 > 详细

Hat’s Words hdu-1247

时间:2015-07-24 20:43:00      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

就是查找这个单词能不能有两个单词组成,简单的字典树题目
//////////////////////////////////////////////////////////////
#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\n", 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;

} 

Hat’s Words hdu-1247

标签:

原文地址:http://www.cnblogs.com/liuxin13/p/4674319.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!