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< ...
随机推荐
- rsyslog 配置详解
格式:: 日志设备(类型).(连接符号)日志级别 日志处理方式(action) 日志设备(可以理解为日志类型): ------------------------ auth –pam产生的日志 aut ...
- 练习一下linux中的list函数。
所有的list函数见 include/linux/list.h 自己从 include/linux/list.h 拷贝了一些函数到自己的list.c中, 然后练习了一下. 没有别的目的,就是想熟练一下 ...
- android开发利器--站在巨人肩膀上前行
本文主要介绍有助于android开发的三方平台和站点. 一:开发阶段 1:SVN(一个开放源码的版本号控制系统) 团队开发没有server,代码管理就没那么方便了,推荐taocode阿里开源站点,方便 ...
- 2.1确定一个char包含何种字符
知识点: 1.char.IsControl 2.char.IsPunctuation 3.char.IsSurrogate 4.char.IsWhitespace 5.char.IsDigit 6.c ...
- XML编程与应用-读取XML
实例:使用XmlTextReader类的对象读取XML文档 代码如下 using System; using System.Collections.Generic; using System.Linq ...
- 使用window.postMessage实现跨域通信
JavaScript由于同源策略的限制,跨域通信一直是棘手的问题.当然解决方案也有很多: document.domain+iframe的设置,应用于主域相同而子域不同: 利用iframe和locati ...
- Spring学习之优缺点
Spring 1.Spring工作机制及为什么要用? Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.Spring既是一个AOP框架,也是一IOC容器. SpringFrame ...
- Hive入门之UDFS函数
一.UDFS函数介绍 1. 基本UDF (1)SHOWFUNCTIONS:这个用来熟悉未知函数. DESCRIBE FUNCTION<function_name>; (2)A IS NUL ...
- TinyFox 部署在CentOS7 中测试使用
一:TinyFox介绍 TinyFox 是一款支持OWIN标准的WEB应用的高性能的HTTP服务器,是Jexus Web Server的"姊妹篇".TinyFox本身的功能是htm ...
- Jquery 获取IP地址
//获取ip和地址 $(function () { var url = 'http://chaxun.1616.net/s.php?type=ip&output=json&callba ...