| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1116 人关注过本帖
标题:谁来教教我tire树啊0.0
取消只看楼主 加入收藏
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
结帖率:94.44%
收藏
已结贴  问题点数:100 回复次数:3 
谁来教教我tire树啊0.0
现在在做搜索的题目,老遇到有关字符窜搜索的题目,而最佳方法就是用tire树用空间来换时间,但是网上找了下,都没有全面的资料(可能我不会查资料),我查到的都是几句简单的话+一个没有注释的代码,所以我怎么也看不到他是如何实现的所以求各位帮我弄份简单易懂的资料给我啊,小弟不胜感谢啊
搜索更多相关主题的帖子: tire 
2010-08-07 08:11
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
收藏
得分:0 
第2个有点注释,我看看 能看懂不,非常感谢啊
2010-08-07 08:36
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
收藏
得分:0 
回复 4楼 我的s天空
你是在回答我的问题吗表示不懂
2010-08-07 10:32
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
收藏
得分:0 
回复 2楼 sunyh1999
看了那有注释的代码,貌似有点懂了,于是就去做这题http://acm.hdu.
Sample和自己想的几个案例饿都过了,可是提交时说超内存了
帮帮看看哪错了 还是哪可以优化下啊
我的代码是这样的希望能看懂啊
#include<stdio.h>
#include<stdlib.h>
struct tree
{
    int flag;
    struct tree *next[10];
};
void tree1(struct tree *root)
{
    int i;
    for(i=0;i<10;i++)
    {
        root->flag=0;
        root->next[i]=NULL;
    }
}
int count;
void tire_tree(struct tree *root,char word[10])
{
    struct tree *p=root;
    int tem,i=0;
    while(word[i])
    {
        if(p->flag==1)//判断它的前缀单词是否存在
           count++;
        tem=word[i]-'0';
        if(p->next[tem]==NULL)
        {
            p->next[tem]=(struct tree *)malloc(sizeof(struct tree));
            tree1(p->next[tem]);
        }
        if(p->next[tem]&&word[i+1]=='\0')//判断以它为前缀的单词是否存在
        count++;
        p=p->next[tem];
        i++;
    }
    p->flag=1;
}
int main()
{
    int t,n,i;
    char word[10];
    struct tree *root=NULL;
    while(~scanf("%d",&t))
    {
        while(t--)
        {
            scanf("%d",&n);
            getchar();
            count=1;
            root=(struct tree *)malloc(sizeof(struct tree));
            tree1(root);
            for(i=0;i<n;i++)
            {
                gets(word);
                tire_tree(root,word);
            }
            if(count>1)
                printf("No\n");
            else
                printf("Yes\n");
        }
    }
    return 0;
}

[ 本帖最后由 草狼 于 2010-8-7 10:56 编辑 ]
2010-08-07 10:36
快速回复:谁来教教我tire树啊0.0
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025021 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved