zoukankan      html  css  js  c++  java
  • hdu1671 字典树

    比较简单,出现前缀。不过要释放空间。

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    struct trie
    {
        trie *next[10];
        int sum;
    };
    trie *root;
    char str[10002][11];
    void init()
    {
        root=(trie*)malloc(sizeof(trie));
        for(int i=0;i<10;i++)
            root->next[i]=NULL;
        root->sum=0;
    }
    void insert(char *s)
    {
        int i,j,len=strlen(s);
        trie *p=root,*q;
        for(i=0;i<len;i++)
        {
            int id=s[i]-'0';
            if(p->next[id]==NULL)
            {
                q=(trie*)malloc(sizeof(trie));
                for(j=0;j<10;j++)
                    q->next[j]=NULL;
                q->sum=0;
                p->next[id]=q;
            }
            p=p->next[id];
            p->sum++;
        }
    }
    int query(char *s)
    {
        int i,j,len=strlen(s);
        trie *p=root;
        for(i=0;i<len;i++)
        {
            int id=s[i]-'0';
            p=p->next[id];
        }
        if(p->sum>1)
            return 1;
        return 0;
    }
    void freetrie(trie *rt)
    {
        for(int i=0;i<10;i++)
            if(rt->next[i]!=NULL)
                freetrie(rt->next[i]);
            free(rt);
    }
    int main()
    {
        int flag,i,j,t,n;
        scanf("%d",&t);
        while(t--)
        {
            init();
            flag=0;
            scanf("%d",&n);
            for(i=0;i<n;i++)
            {
                scanf("%s",str[i]);
                insert(str[i]);
            }
            for(i=0;i<n;i++)
            {
                flag=query(str[i]);
                if(flag)break;
            }
            if(flag)
                printf("NO
    ");
            else printf("YES
    ");
            freetrie(root);//释放内存
        }
    }
  • 相关阅读:
    单例类
    日期类2
    日历类
    日期转换类
    抓取网页内容并截图
    关于计时器与多线程
    让页面上图片不变形
    Thread 调用方法的方式
    语音放大缩小
    阻止Enter键回发到服务端Asp.net
  • 原文地址:https://www.cnblogs.com/sweat123/p/4689092.html
Copyright © 2011-2022 走看看