hdoj1305-Immediate Decodability
来源:互联网 发布:下载天际通软件 编辑:程序博客网 时间:2024/06/11 12:07
Immediate Decodability
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3521 Accepted Submission(s): 1822
Problem Description
An encoding of a set of symbols is said to be immediately decodable if no code for one symbol is the prefix of a code for another symbol. We will assume for this problem that all codes are in binary, that no two codes within a set of codes are the same, that each code has at least one bit and no more than ten bits, and that each set has at least two codes and no more than eight.
Examples: Assume an alphabet that has symbols {A, B, C, D}
The following code is immediately decodable:
A:01 B:10 C:0010 D:0000
but this one is not:
A:01 B:10 C:010 D:0000 (Note that A is a prefix of C)
Examples: Assume an alphabet that has symbols {A, B, C, D}
The following code is immediately decodable:
A:01 B:10 C:0010 D:0000
but this one is not:
A:01 B:10 C:010 D:0000 (Note that A is a prefix of C)
Input
Write a program that accepts as input a series of groups of records from input. Each record in a group contains a collection of zeroes and ones representing a binary code for a different symbol. Each group is followed by a single separator record containing a single 9; the separator records are not part of the group. Each group is independent of other groups; the codes in one group are not related to codes in any other group (that is, each group is to be processed independently).
Output
For each group, your program should determine whether the codes in that group are immediately decodable, and should print a single output line giving the group number and stating whether the group is, or is not, immediately decodable.
Sample Input
0110001000009011001000009
Sample Output
Set 1 is immediately decodableSet 2 is not immediately decodable#include<iostream>#include<cstring>#include<cstdio>using namespace std;struct node{ int flag; node *next[2];};node *newnode(){ node *p=new node; p->flag=0; p->next[0]=NULL; p->next[1]=NULL; return p;}int gettree(node *root,char *s){ int i,l; l=strlen(s); node *p=root; for(i=0;i<l;i++) { int k=s[i]-'0'; if(p->flag) return 0; if(p->next[k]==NULL) p->next[k]=newnode(); p=p->next[k]; } if(p->next[0]==NULL&&p->next[1]==NULL&&p->flag==0) { p->flag=1; return 1; } else return 0;}void freedom(node *p){ if(p->next[0]) freedom(p->next[0]); if(p->next[1]) freedom(p->next[1]); delete p;}int main(){ int i; int n=0,m=0; char s[20][20]; node *head; while(scanf("%s",s[n++])!=EOF) { if(s[n-1][0]!='9') continue; else { n--; m++; head=newnode(); for(i=0;i<n;i++) { int k=gettree(head,s[i]); if(k==0) break; } if(i==n) printf("Set %d is immediately decodable\n",m); else printf("Set %d is not immediately decodable\n",m); freedom(head); n = 0 ; } }}
阅读全文
0 0
- HDOJ1305 Immediate Decodability
- hdoj1305-Immediate Decodability
- Immediate Decodability
- Immediate Decodability
- Immediate Decodability
- Immediate Decodability
- Immediate Decodability
- Immediate Decodability
- IMMEDIATE DECODABILITY
- Immediate Decodability
- Immediate Decodability
- fjnu 1112 IMMEDIATE DECODABILITY
- 1056 IMMEDIATE DECODABILITY
- 644--Immediate Decodability
- 1056 IMMEDIATE DECODABILITY //trie
- poj 1056 : immediate decodability
- POJ 1056 IMMEDIATE DECODABILITY
- HDOJ Immediate Decodability
- Linux 文件系统编程
- 用jQuery实现简单的加入收藏页面的功能
- 虚拟币开发专题(山寨币私钥、公钥、钱包地址之间的关系)
- Error:Execution failed for task ':hb_cippo:processDebugManifest'. > Manifest merger failed : Attribu
- jqGrid 各种参数详情!
- hdoj1305-Immediate Decodability
- 频繁数据集挖掘的一种实现方式
- 关于经典蓝牙和低功耗蓝牙的区别
- fork和vfork函数
- vue 相关技术文章地址和知识点整理
- 全备份、增量备份与差量备份
- [P1197][JSOI2008]星球大战
- Android 蓝牙4.0 BLE 获取链接设备Rssi值
- 使用phpize遇到问题