• 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

  • 相关阅读:
    消费RabbitMQ时的注意事项,如何禁止大量的消息涌到Consumer,保证线程安全
    消费RabbitMQ时的注意事项,如何禁止大量的消息涌到Consumer,保证线程安全
    scrollTop值为0等疑难杂症
    9.四平方和
    8.冰雹数
    7.搭积木
    6.凑算式
    5.分小组
    4.骰子游戏
    3.平方怪圈
  • 原文地址:https://www.cnblogs.com/gavinsp/p/4563240.html
Copyright © 2020-2023  润新知