Poj1056
来源:互联网 发布:zabbix 网络拓扑 编辑:程序博客网 时间:2024/06/07 02:57
/**问题:合法的编码不允许出现一个编码是另一个的前缀。问题也就是怕段是否会出现这种情况。*解法:用字典树存储,定义两个标记,end,alr。end:为0代表打当前节点是一个编码的结束;当某一节点经过的节点end=1,代表表示end=1的节点是该节点的前缀。(end用于判断前面比自己短的编码)alr:为0,表示该节点未被其他编码经过,即没有前缀;为1,表示有其他编码经过,表示有前缀。(用于判断段编码是不是比自己长的前面编码的前缀)*/#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct {int next[2];int end,alr;}Tr;Tr t[1<<8];int num;int insert(char *x,int pos)//插入函数,并判断。{if(t[pos].end)//表示该节点是其长他节点的前缀。return 1;if(*x){t[pos].alr=1;//该节点被经过if(!t[pos].next[*x-'0'])t[pos].next[*x-'0']=num++;insert(x+1,t[pos].next[*x-'0']);}else{t[pos].end=1;return t[pos].alr;}}/*end of insert*/int main(){int flag=0;num=1;int u=0;char str[15];while(scanf("%s",str)!=EOF){if(str[0]=='9'){if(!flag){printf("Set %d is immediately decodable\n",++u);}else printf("Set %d is not immediately decodable\n",++u);flag=0;memset(t,0,sizeof(Tr)*(num+1));num=1;continue;}if(!flag&&insert(str,0))flag=1;}return 0;}/*The end*/
0 0
- poj1056
- Poj1056
- POJ1056
- POJ1056 IMMEDIATE DECODABILITY
- poj1056(字典树)
- POJ1056 IMMEDIATE DECODABILITY【数据结构】
- POJ1056 Runtime Error
- POJ1056 - IMMEDIATE DECODABILITY - 二叉树
- POJ1056 IMMEDIATE DECODABILITY(Trie树)
- ZOJ1808 POJ1056 HDU1305 Immediate Decodability,Trie树
- poj1056 IMMEDIATE DECODABILITY (字典树)
- poj1056 http://poj.org/problem?id=1056
- poj1056 & hdu1305 & zoj1808 Immediate Decodability(字典树变形)
- 在MFC应用中深入定制WebBrowser控件
- 软考——(2)数据结构
- Matlab基础学习--------关系和逻辑运算及多项式运算
- java之Io-File类
- 学习《Unix环境高级编程》之问题
- Poj1056
- JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第二篇:登陆和注销功能实现
- java学习笔记day10
- Android Notification
- nyoj114某种序列
- 无线网络适配器点击启用显示已启用但是还是灰色的
- ubuntu14.04 firefox浏览器 flashplayer 插件安装
- 复盘罗辑思维卖月饼:微信电商的五大G点 (转)
- Struts2文件的上传、下载之一