zoukankan      html  css  js  c++  java
  • POJ 1056 IMMEDIATE DECODABILITY 字典树

    样例 POJ 1056 http://poj.org/problem?id=1056

    字典树入门,很容易的一道字典树题

    题意: 输入一些字符串,由0  1  组成,如果有一个字符串是另一个的前缀,就是不能被立即解开的锁,输出

     Set 1 is not immediately decodable,如果没有前缀,就是能被立即解开的,输入一个  9  代表 这组输入结束,
    每组结束后,需要对字典树清空,就是删除字典树,
    判断前缀的方法,每输入一个字符串,就在该字符串的树的结尾标记,如果下个字符串经过了这个标记,就说明是前缀;
    字典树的 root 需要动态分配内存,new  动态分配内存, delete 删除动态内存,
    所以代码应该这样     */
    
    <pre name="code" class="cpp">//  poj  1056 IMMEDIATE DECODABILITY
    #include <iostream>
    #include <cstdio>
    #include <string.h>
    using namespace std;
    typedef struct TREE
    {
        TREE *next[2]; 
        int end;  // 结尾
        TREE()     //结构体的初始化,应该这样
        {
            end=0;
            memset(next,0,sizeof(next));
        }
    }tree;
    TREE *root;  //这里需定义为指针
    char code[15];
    int flag = 1;
    
    void creat(char *code)
    {
    	TREE *x = root;
    	for(int i=0; code[i] != ''; i++)
    	{
    		int a = code[i] - '0';
    		if(x->next[a] == NULL)
    			x->next[a] = new TREE();
    		x = x->next[a];
    		if(x->end == 1) flag = 0;
    	}
    	x->end = 1;
    }
    
    void del(TREE *root)
    {
    	for(int i=0;i<2;i++)
    	{
    		if(root->next[i] != NULL)
    			del(root->next[i]);
    	}
    	delete root;  //删除的也只是动态内存而已
    }
    int main()
    {
    	freopen("1.in","r",stdin);
    	int i = 1;
    	root = new TREE(); // 动态分配内存
    	while(gets(code) != NULL)
    	{
    		if(code[0] != '9') creat(code);
    
    		if(code[0] == '9')
    		{
    			if(flag)	printf("Set %d is immediately decodable
    ", i++);
    			else        printf("Set %d is not immediately decodable
    ", i++);
    			del(root);
    			root = new TREE(); //再次分配动态内存
    			flag = 1;
    		}
    
    	}
    	return 0;
    }
    


    
    


    www.cnblogs.com/tenlee
  • 相关阅读:
    我在D2讲演的视频,已经可以下载了~
    走出海量数据及访问量压力困境
    博客作者应该学习的15个国外博客
    如何将jsp动态网页转换成静态页面
    新一代网络模式Web 2.0火爆发展
    数据库设计中的14个关键技巧
    如何进行RSS推广
    运用RUP 4+1视图方法进行软件架构设计
    02java关键词变量类型
    03java运算符函数
  • 原文地址:https://www.cnblogs.com/tenlee/p/4420140.html
Copyright © 2011-2022 走看看