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

POJ - 3630 代码

时间:2014-07-21 10:39:52      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   数据   io   

Trie的简单应用,只涉及插入字符串的操作。

需要注意的是,输入数据有T组,在处理每一组数据之前都要初始化root,由于忽视了这一点WA了n次。

还有一点就是,在发现一组数据答案为“NO”之后,仍然要读完这组数据的字符串。在这一点上也WA了好多次= =

 

另外,本题大概需要建立4000000个节点,如果采用动态空间建点会TLE。

看来malloc操作确实是很慢啊。

所以提前开一个大的数组空间,静态的就好了。

 

代码如下:

/*
Author : Magician Van
*/

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cstdlib>

using namespace std;

const int MaxNext = 10 + 2, MaxL = 10 + 2, MaxNode = 100000 + 5;

int T, n, top;

char Str[MaxL];

bool Wrong = false;

typedef struct TrieNode 
{
    bool isStr;
    TrieNode *Next[MaxNext];
} Trie;

Trie Ta[MaxNode];

void Insert(Trie *root, char *S, int len)
{
    if (root == NULL || len == 0) return;
    Trie *p = root;
    int sum = 0;
    for (int i = 0; i <= len - 1; i++)
    {
        if (p -> Next[S[i] - 0] == NULL)
        {
            Trie *temp = &Ta[++top];
            temp -> isStr = false;
            for (int j = 0; j <= 9; j++) temp -> Next[j] = NULL;
            p -> Next[S[i] - 0] = temp; 
        }
        else sum++;
        p = p -> Next[S[i] - 0];
        if (p -> isStr) 
        {
            Wrong = true;
            return;
        }
    }
    p -> isStr = true;
    if (sum == len) Wrong = true;
} 

int main()
{
    scanf("%d", &T);
    for (int t = 1; t <= T; t++)
    {
        top = 0;        
        Trie *root = &Ta[++top];
        for (int i = 0; i <= 9; i++) root -> Next[i] = NULL;
        root -> isStr = false;
        Wrong = false;
        scanf("%d", &n);
        for (int i = 1; i <= n; i++) 
        {
            scanf("%s", Str);
            if (!Wrong) Insert(root, Str, strlen(Str));
        }
        if (Wrong) printf("NO\n");
        else printf("YES\n");
    }
    return 0;
}

POJ - 3630 代码,布布扣,bubuko.com

POJ - 3630 代码

标签:style   blog   color   os   数据   io   

原文地址:http://www.cnblogs.com/F-Magician/p/3856042.html

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