zoukankan      html  css  js  c++  java
  • hdu 1305 还是字典树

    #include<cstdio>
    #include<iostream>
    #include<string>
    #include<cstdlib>
    #define maxn 2
    #include<queue>
    using namespace std;
    struct Tri
    {
        Tri*next[maxn];
        int num;
    };
    Tri *root;
    void buildTri(string ss)//建树的过程是一个动态的过程 动插的过程
    {
        Tri *p=root,*q;
        for(int i=0;i<ss.size();i++)
        {
            int id=ss[i]-'0';
            if(p->next[id]==NULL)
            {
                q=(Tri*)malloc(sizeof(Tri));
                q->num=1;
                for(int j=0;j<maxn;j++) q->next[j]=NULL;
                p->next[id]=q;
                p=p->next[id];
            }
            else p=p->next[id],p->num++;
        }
        p->num=-1;// 作为结束的标志
    }
    int findTri(string ss)
    {
        Tri *p=root,*q;
        for(int i=0;i<ss.size();i++)
        {
            int id=ss[i]-'0';
            p=p->next[id];
            if(p==NULL) return 0;
            if(p->num==-1) return -1;
        }
        return -1;
    }
    void del(Tri *root)
    {
        Tri *zz=root;
        if(zz==NULL) return;
        for(int i=0;i<maxn;i++)
        {
            if(zz->next[i]!=NULL) del(zz->next[i]);
        }
        free(zz);
    }
    int main()
    {
        int Case=0;
        string ss;
        queue<string> fuck;
        while(cin>>ss)
        {
            if(ss=="9")
            {
                int flag=1;
                root=(Tri *)malloc(sizeof(Tri));
                for(int i=0;i<maxn;i++) root->next[i]=NULL;
                root->num=1;
                while(!fuck.empty())
                {
                    string temp;
                    temp=fuck.front();
                    fuck.pop();
                    if(findTri(temp)==-1)
                    {
                        flag=0;
                        break;
                    }
                    buildTri(temp);
                }
                if(flag) printf("Set %d is immediately decodable
    ",++Case);
                else printf("Set %d is not immediately decodable
    ",++Case);
                del(root);
                continue;
            }
            fuck.push(ss);
        }
        return 0;
    }
  • 相关阅读:
    下载文件
    Cookie方法
    阿拉伯数字转大写
    格式化日期
    正向代理与反向代理
    get post 区别
    gulp
    什么是javascript中的同步&&异步?
    懒加载
    js操作dom时发生了什么?
  • 原文地址:https://www.cnblogs.com/z1141000271/p/5973769.html
Copyright © 2011-2022 走看看