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)

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的更多相关文章

  1. UVa 644 Immediate Decodability

    吐槽下我的渣渣英语啊,即使叫谷歌翻译也没有看懂,最后还是自己读了好几遍题才读懂. 题目大意:题意很简单,就是给一些互不相同的由'0','1'组成的字符串,看看有没有一个字符串是否会成为另一个的开头的子 ...

  2. hdu 1305 Immediate Decodability(字典树)

    Immediate Decodability Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  3. Immediate Decodability(字典树)

    Immediate Decodability Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  4. UVA644 Immediate Decodability

    UVA644 Immediate Decodability Trie Trie模板题 难度几乎相等的题P2580 于是他错误的点名开始了 对于每组数据都清空树太浪费时间,所以我们只要在需要新点时预先把 ...

  5. POJ1056 IMMEDIATE DECODABILITY & POJ3630 Phone List

    题目来源:http://poj.org/problem?id=1056   http://poj.org/problem?id=3630 两题非常类似,所以在这里一并做了. 1056题目大意: 如果一 ...

  6. HDU 1305 Immediate Decodability 可直接解码吗?

    题意:一个码如果是另一个码的前缀,则 is not immediately decodable,不可直接解码,也就是给一串二进制数字给你,你不能对其解码,因解码出来可能有多种情况. 思路:将每个码按长 ...

  7. 「UVA644」 Immediate Decodability(Trie

    题意翻译 本题有多组数据.每组数据给出一列以"9"结尾的仅包含'0'和'1'的字符串,如果里面有一个是另一个的子串,输出"Set &case is not imm ...

  8. POJ 1056 IMMEDIATE DECODABILITY

    IMMEDIATE DECODABILITY Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9630   Accepted: ...

  9. HDU1305 Immediate Decodability (字典树

    Immediate Decodability An encoding of a set of symbols is said to be immediately decodable if no cod ...

  10. hdu 1305 Immediate Decodability

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1305 字典树裸题,如下: #include<algorithm> #include< ...

随机推荐

  1. Autoconf/Automake工具简介

    在linux下编程的时候,有时候工程项目很大,文件比较多,此时需要使用自动创建Makefile文件功能.也就是使用Autoconf/Automake工具自动生成Makefile,为编译程序带来了方便, ...

  2. openstack 采用conductor的原因

    供参考. Tan0同学给我的解释: 两个原因 一个是为了isolation做准备 因为升级主要就是升DB的schema 如果让compute直接读写DB,那每次升级都得升compute 现在隔离开之后 ...

  3. select option 下拉多选单选bootstrap插件使用总结

    <select id="example-getting-started" multiple="multiple"> <option value ...

  4. The Suspects(并查集求节点数)

    The Suspects Time Limit: 1000MS   Memory Limit: 20000K Total Submissions: 28164   Accepted: 13718 De ...

  5. cmd命令 拷贝某文件夹及其子文件夹文件到其它文件夹

    @ECHO OFF cd/d %H:\FileLoc\CNET&cd.. ::echo 拷贝"%H:\FileLoc\CNET"中文件到"H:\FileLocTe ...

  6. (转)130道ASP.NET面试题

    130道ASP.NET面试题 转自http://blog.csdn.net/kingmax54212008/article/details/2021204 1. 简述 private. protect ...

  7. win7(32 bit) + IE8 环境,IE8无法弹窗(错误提示:“此网页上的错误可能会使它无法正确运行”),有关的系统注册信息损坏——解决方法

    错误截图如下:   IE有关的系统注册信息损坏,导致IE无法正常弹窗.   解决办法:重新注册与IE有关的DLL文件,具体如下: 1.以管理员身份运行附件脚本(新建txt文件,将下面代码复制到txt文 ...

  8. NSURLSessionConfiguration的简单实用

    NSURLSessionConfiguration 基于前面学习了NSURLSession的知识,这边文章就讲下NSURLSessionConfiguration相关应用,(这名字可真长). 简而言之 ...

  9. .Net平台-MVP模式再探(二)

    PS:     本文与  上一遍文章  没有什么必然的联系,可以说是对于MVP的一定的加深,或许在理解上比上一篇多有点难度. 正文   一.简单讲讲MVP是什么玩意儿 如果从层次关系来讲,MVP属于P ...

  10. C# Attribute(特性)之---契约---[ServiceContract] 、 [OperationContract]

    代码如下 : [ServiceContract] //服务协定定义 using System.ServiceModel; public interface IInterface1 { [Operati ...