博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pku1056 IMMEDIATE DECODABILITY
阅读量:5061 次
发布时间:2019-06-12

本文共 1792 字,大约阅读时间需要 5 分钟。

http://poj.org/problem?id=1056

Trie

有一些字符串,判断是否:这些字符串之间都不是彼此的前缀

1 #include 
2 #include
3 4 const int CHARSET = 2, BASE = '1', MAX_NODE = 1001; 5 6 int tot, root, child[MAX_NODE][CHARSET]; 7 bool flag[MAX_NODE]; 8 9 void init()10 {11 memset(child, 0, sizeof(child));12 flag[1] = false;13 root = tot = 1;14 }15 16 int insert(const char *str)17 {18 int i, cur, j, flag1 = 0, flag2 = 0;19 cur = root;20 for(i=0; str[i]; i++)21 {22 if(child[cur][str[i]-BASE] == 0)23 {24 if(flag[cur])25 {26 flag2 = 1;27 }28 flag1 = 1;29 tot = tot + 1;30 child[cur][str[i]-BASE] = tot;31 memset(child[tot], 0, sizeof(child[tot]));32 flag[tot] = false;33 }34 cur = child[cur][str[i]-BASE];35 }36 flag[cur] = true;37 if(flag1 == 0 || flag2 == 1)38 {39 return 1;//重复 40 }41 return 0;42 }43 44 45 46 int main()47 {48 char s[12] = "\0";49 int cases = 1, temp, flag = 0;50 init();51 while(~scanf("%s", s))52 {53 if(strcmp(s, "9") == 0)54 {55 if(flag)56 {57 printf("Set %d is not immediately decodable\n", cases);58 }59 else60 {61 printf("Set %d is immediately decodable\n", cases);62 }63 cases ++;64 flag = 0;65 init();66 }67 else68 {69 temp = insert(s);70 //printf("%d\n", temp);71 flag |= temp;72 }73 memset(s, 0, sizeof(s));74 }75 return 0;76 }

 

转载于:https://www.cnblogs.com/yuan1991/archive/2013/05/18/pku1056.html

你可能感兴趣的文章
Oracle OEM 配置报错: No value was set for the parameter DBCONTROL_HTTP_PORT 解决方法
查看>>
01入门
查看>>
python正则表达式
查看>>
嵌套循环连接(nested loops join)原理
查看>>
shell统计特征数量
查看>>
复习文件操作
查看>>
C#Hashtable与Dictionary性能
查看>>
10个让你忘记 Flash 的 HTML5 应用演示
查看>>
8个Python面试必考的题目,小编也被坑过 ToT
查看>>
SQL Server 使用作业设置定时任务之一(转载)
查看>>
centos 图形界面和命令行界面切换(转载)
查看>>
Maven启用代理访问
查看>>
Primary definition
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
发送请求时params和data的区别
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(4)--外部项目选取器和业务数据连接...
查看>>
如何增强你的SharePoint 团队网站首页
查看>>