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;
    }
  • 相关阅读:
    运行jar包读取外部配置文件
    DES加密
    BlockingQueue
    文件锁
    Hive 的 排序
    linux下date命令实现时间戳与日期的转换
    bcov进行覆盖率统计
    对c++服务端进行覆盖率统计
    github基础命令
    gcc编译参数-fPIC问题 `a local symbol' can not be used when making a shared object;
  • 原文地址:https://www.cnblogs.com/z1141000271/p/5973769.html
Copyright © 2011-2022 走看看