zoukankan      html  css  js  c++  java
  • POJ 1056

    #include <iostream>
    #include <string>
    #define MAXN 50
    using namespace std;
    
    struct node
    {
        node * l;
        node * r;
        bool boo;
        node()
        {
            l = NULL;
            r = NULL;
            boo = false;
        }
    };
    
    
    bool ans;
    
    int _index;
    
    node res[2*MAXN+1];
    
    node * insert(node * root,string s,int index,int len)
    {
        if(s[index] == '0')
        {
            if(root->l == NULL)
            {
                root->l = &res[_index ++];
                root->l->boo = false;
                root->l->l = root->l->r = NULL;
                if(index == len-1)
                {
                    root->l->boo = true;
                    return root;
                }
            }
            else
            {
                if(index == len-1)
                {
                    ans = false;
                    return root;
                }
                if(root->l->boo == true)
                {
                    ans = false;
                    return root;
                }
            }
    
    
            root->l = insert(root->l,s,index+1,len);
            return root;
        }
        else
        {
            if(root->r == NULL)
            {
                root->r = &res[_index ++];
                root->r->boo = false;
                root->r->l = root->r->r = NULL;
                if(index == len-1)
                {
                    root->r->boo = true;
                    return root;
                }
            }
            else
            {
                if(index == len-1)
                {
                    ans = false;
                    return root;
                }
                if(root->r->boo == true)
                {
                    ans = false;
                    return root;
                }
            }
            root->r = insert(root->r,s,index+1,len);
            return root;
        }
    }
    
    int main()
    {
        //freopen("acm.acm","r",stdin);
        string s;
        int time = 0;
        while(cin>>s)
        {
            _index = 0;
            ans = true;
            node * root = &res[_index ++];
            root->boo = false;
            root->l = root->r = NULL;
            if(ans)
            {
                root = insert(root,s,0,s.length());
            }
            while(cin>>s)
            {
                if(s == "9")
                {
                    break;
                }
                if(ans)
                {
                    root = insert(root,s,0,s.length());
                }
            }
            cout<<"Set "<<++ time;
            if(ans == false)
            {
                cout<<" is not immediately decodable"<<endl;
            }
            else
            {
                cout<<" is immediately decodable"<<endl;
            }
        }
    }

    关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。 

    技术网站地址: vmfor.com

  • 相关阅读:
    MongoDB自学日记2——权限
    最近项目的几个问题
    MongoDB自学日记1——基本操作
    一次JVM调优的笔记
    Memcached学习笔记
    为博客添加计数器的方法
    关于多核系统同步互斥的小研究
    Linux中同步互斥机制研究之原子操作
    你真的懂printf么?
    Lingo安装
  • 原文地址:https://www.cnblogs.com/gavinsp/p/4563240.html
Copyright © 2011-2022 走看看