pku1056 IMMEDIATE DECODABILITY
2013-05-18 20:56
267 查看
http://poj.org/problem?id=1056
Trie
有一些字符串,判断是否:这些字符串之间都不是彼此的前缀
Trie
有一些字符串,判断是否:这些字符串之间都不是彼此的前缀
#include <stdio.h> #include <string.h> const int CHARSET = 2, BASE = '1', MAX_NODE = 1001; int tot, root, child[MAX_NODE][CHARSET]; bool flag[MAX_NODE]; void init() { memset(child, 0, sizeof(child)); flag[1] = false; root = tot = 1; } int insert(const char *str) { int i, cur, j, flag1 = 0, flag2 = 0; cur = root; for(i=0; str[i]; i++) { if(child[cur][str[i]-BASE] == 0) { if(flag[cur]) { flag2 = 1; } flag1 = 1; tot = tot + 1; child[cur][str[i]-BASE] = tot; memset(child[tot], 0, sizeof(child[tot])); flag[tot] = false; } cur = child[cur][str[i]-BASE]; } flag[cur] = true; if(flag1 == 0 || flag2 == 1) { return 1;//重复 } return 0; } int main() { char s[12] = "\0"; int cases = 1, temp, flag = 0; init(); while(~scanf("%s", s)) { if(strcmp(s, "9") == 0) { if(flag) { printf("Set %d is not immediately decodable\n", cases); } else { printf("Set %d is immediately decodable\n", cases); } cases ++; flag = 0; init(); } else { temp = insert(s); //printf("%d\n", temp); flag |= temp; } memset(s, 0, sizeof(s)); } return 0; }
相关文章推荐
- PKU1056——IMMEDIATE DECODABILITY
- pku 1056(字典树)
- PKU 2006 happy2006
- pku 1673 EXOCENTER OF A TRIANGLE
- PKU2533 最长上升子序列 DP
- pku 1847 Tram
- 二分图最大匹配 增广路径法实现 pku 1469 COURSES
- 典型地图搜索 pku 2488 A Knight's Journey
- pku 1631 Bridging signals nLogn效率的最长上升子序列
- [PKU 1077] 搜索之BFS & A*(上)
- PKU 1386 Play on Words 判断图中是否存在欧拉回路、欧拉路
- PKU2051(优先队列求法)
- [PKU 2777] 线段树(一) {概述 基本操作}
- PKU1201 intervals
- Common Subsequence 1458 pku
- PKU2413 how many fibs
- pku 2186
- pku kmp题目小结
- pku ACM 1125
- pku 2389解题报告