zoukankan      html  css  js  c++  java
  • 字典树 之 poj 1056

    //  [7/5/2014 Sjm]
    /*
    字典树,找前缀。具体求解思路同:字典树 之 hdu 1671 poj 3630
    */
    #include <iostream>
    #include <cstdlib>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    const int MAX = 2;
    
    struct Trie{
    	bool Judge;
    	Trie* next[2];
    	Trie(){
    		Judge = false;
    		memset(next, NULL, sizeof(next));
    	}
    };
    
    Trie* Root;
    
    bool Cre_Sea_Trie(char* str){
    	int Jdg1 = true, Jdg2 = false;
    	int len = strlen(str);
    	Trie* p = Root;
    	for (int i = 0; i < len; i++) {
    		int pos = str[i] - '0';
    		if (!(p->next[pos])) {
    			p->next[pos] = new Trie;
    			Jdg1 = false;
    		}
    		else {
    			if (p->next[pos]->Judge) {
    				Jdg2 = true;
    				break;
    			}
    		}
    		p = p->next[pos];
    	}
    	p->Judge = true;
    	return (Jdg1 || Jdg2);
    }
    
    void DelTrie(Trie* T) {
    	for (int i = 0; i < MAX; i++) {
    		if (T->next[i]) {
    			DelTrie(T->next[i]);
    		}
    	}
    	delete[] T;
    }
    
    int main()
    {
    	//freopen("input.txt", "r", stdin);
    	char str[10][15];
    	int num = 0, mycount = 0;
    	while (~scanf("%s", str[num])) {
    		if (strcmp(str[num], "9") == 0) {
    			Root = new Trie;
    			mycount++;
    			int i;
    			for (i = 0; i < num; i++) {
    				if (Cre_Sea_Trie(str[i])) {
    					printf("Set %d is not immediately decodable
    ", mycount);
    					break;
    				}
    			}
    			if (i == num) {
    				printf("Set %d is immediately decodable
    ", mycount);
    			}
    			DelTrie(Root);
    			num = 0;
    			continue;
    		}
    		num++;
    	}
    	return 0;
    }
    
  • 相关阅读:
    定位
    supervisor进程管理工具
    简单git使用命令
    django + Vue项目上线部署
    Vue配置浏览器头部图标和title
    vue打包项目后 谷歌浏览器可以打开,其他浏览器不行
    js反向解析爬取企**网站
    python常用排序算法
    python脚本demo
    request模块封装
  • 原文地址:https://www.cnblogs.com/shijianming/p/4140839.html
Copyright © 2011-2022 走看看