Immediate Decodability
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
(Note that A is
B:10 C:010 D:0000
a prefix of C)
Input
Write a program that accepts as input a series of groups of records from a data file. 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.
The Sample Input describes the examples above.
Sample Input
- 01
- 10
- 0010
- 0000
- 9
- 01
- 10
- 010
- 0000
- 9
Sample Output
- Set 1 is immediately decodable
- Set 2 is not immediately decodable
HINT
//(如果任意一个串,均不是其它串的前缀则表明,is immediately decodable,否则is not immediately decodable)
- #include<stdio.h>
- #include<string.h>
- int main()
- {
- char a[100][100];
- int t=0,i,j,t1,t2,k,s=1;
- while(gets(a[t]))
- {
- t++;
- while(gets(a[t]))
- {
- if(a[t][0]=='9')
- break;
- t++;
- }
- for(i=0;i<t;i++)
- {
- t1=strlen(a[i]);
- for(j=i+1;j<t;j++)
- {
- //t2=strlen(a[j]);
- for(k=0;k<t1;k++)
- {
- if(a[i][k]!=a[j][k])//(is immediately decodable)
- break;
- }
- if(k==t1)//(is not immediately decodable)
- break;
- }
- if(j!=t)//(is not immediately decodable)
- break;
- }
- if(i==t)
- printf("Set %d is immediately decodable\n",s);
- else
- printf("Set %d is not immediately decodable\n",s);
- //for(i=0;i<t;i++)
- //printf("%s\n",a[i]);
- //printf("\n");
- t=0;
- s++;
- }
- return 0;
- }
//参考他人代码
单模式匹配算法:给定一个单词和一个字符串,查看字符串中是否存在该单词,通过调用strstr函数进行匹配;
- #include<iostream>
- #include<string>
- #include<stdio.h>
- #include<string.h>
- using namespace std ;
- int main()
- {
- char word[1000][20] ;
- int t = 1 ;
- while(cin >> word[0])
- {
- int i = 1 ;
- while(cin >> word[i++])
- if(strcmp(word[i-1],"9")==0)
- break ;
- bool flag = true ;
- i--;
- for(int j = 0 ; j < i ; j++)//每一行均与其它进行比较
- {
- char *p = NULL ;
- for(int k = 0 ; k < i ; k++)
- {
- if(j == k)
- continue ;
- p = strstr(word[j],word[k]) ;//第j行在其它行(k)中遍历,看是否是其前缀。
- if(p == word[j])
- {
- flag = false ;
- break ;
- }
- }
- if(flag == false)
- break ;
- }
- if(flag)
- printf("Set %d is immediately decodable\n",t++) ;
- else
- printf("Set %d is not immediately decodable\n",t++) ;
- }
- return 0 ;
- }
Immediate Decodability的更多相关文章
- UVa 644 Immediate Decodability
吐槽下我的渣渣英语啊,即使叫谷歌翻译也没有看懂,最后还是自己读了好几遍题才读懂. 题目大意:题意很简单,就是给一些互不相同的由'0','1'组成的字符串,看看有没有一个字符串是否会成为另一个的开头的子 ...
- hdu 1305 Immediate Decodability(字典树)
Immediate Decodability Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- Immediate Decodability(字典树)
Immediate Decodability Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- UVA644 Immediate Decodability
UVA644 Immediate Decodability Trie Trie模板题 难度几乎相等的题P2580 于是他错误的点名开始了 对于每组数据都清空树太浪费时间,所以我们只要在需要新点时预先把 ...
- POJ1056 IMMEDIATE DECODABILITY & POJ3630 Phone List
题目来源:http://poj.org/problem?id=1056 http://poj.org/problem?id=3630 两题非常类似,所以在这里一并做了. 1056题目大意: 如果一 ...
- HDU 1305 Immediate Decodability 可直接解码吗?
题意:一个码如果是另一个码的前缀,则 is not immediately decodable,不可直接解码,也就是给一串二进制数字给你,你不能对其解码,因解码出来可能有多种情况. 思路:将每个码按长 ...
- 「UVA644」 Immediate Decodability(Trie
题意翻译 本题有多组数据.每组数据给出一列以"9"结尾的仅包含'0'和'1'的字符串,如果里面有一个是另一个的子串,输出"Set &case is not imm ...
- POJ 1056 IMMEDIATE DECODABILITY
IMMEDIATE DECODABILITY Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9630 Accepted: ...
- HDU1305 Immediate Decodability (字典树
Immediate Decodability An encoding of a set of symbols is said to be immediately decodable if no cod ...
- hdu 1305 Immediate Decodability
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1305 字典树裸题,如下: #include<algorithm> #include< ...
随机推荐
- MyBitis(iBitis)系列随笔之五:多表(一对多关联查询)
MyBitis(iBitis)系列随笔之一:MyBitis入门实例 MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM) MyBitis(iBitis ...
- javascript函数的基础功能
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 利用OpenCV和MFC对话框建设一个有滑动条控制的播放器--转
(一)问题的提出: OpenCV有一个很简单的播放视频文件并加载滑动条的程序,但是如何用MFC对话框来创建一个有滑动条控制的播放器呢,网络上四处搜索都没有代码可以参考,下的都是些骗子链接文件,很过分, ...
- qemu 调试(二)
我见过最全的剖析QEMU原理的文章 qemu代码分析 qemu中ELF文件的加载 几个关键点,可以设计断点,观察. $ cat command.gdbset breakpoint pending on ...
- Openstack 的 RPC使用。
大家都已经很熟悉了RPC了. 比如说nfs就是采用的RPC通信. 尤其SUN RPC 已经成为了C语言开发的经典一种进程间调用机制. openstack 的RPC 机制, 是基于AMQP 活着其他高级 ...
- _.each的用法2
有这样一个需求:一个对象数组: 内容如下: {[ {id:"ssss",position:"4"}, {id:"ssss",position ...
- Mac 上开启一个简单的服务器
终端输入命令: python -m SimpleHTTPServer 会开启一个端口为8000的本地服务器.
- 【菜鸟学习Linux】-第三章- Linux环境搭建-使用VMware9安装Ubuntu 12.04系统
上一步,我们安装了VMware9虚拟机,现在我们就是用它来安装Ubuntu12.04系统,至于Ubuntu是什么,我就不废话了,大家google一下,比我讲的清楚,好了,开始干活! Ubuntu官网下 ...
- git、githup使用
一.git安装.配置 git安装: root@ubuntu~# apt-get install git git配置githup/自己的git服务器端账号, 即在用户的home目录下生成.gitco ...
- MATLAB中digits和vpa
digits: DIGITS Set variable precision digits. Digits determines the accuracy of variable precision n ...