UVA - 644 Immediate Decodability
2016-04-24 20:32
169 查看
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.
Note: 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
分析:
字符串匹配。
暴力可过。
代码:
#include<stdio.h>
#include<string.h>
char str[100][100];
int com(int t,int x)
{
int n,m,i;
n=strlen(str[t]);
m=strlen(str[x]);
n=(n>m)?m:n;
for(i=0;i<n;i++)
{
if(str[t][i]!=str[x][i])
return 1;
}
return 0;
}
int main()
{
int t,leap,i;
t=0;
leap=0;
int cas=0;
while(gets(str[t])!=NULL)
{
if(str[t][0]=='9')
{
cas++;
if(leap)
printf("Set %d is not immediately decodable\n",cas);
else
printf("Set %d is immediately decodable\n",cas);
t=0;
leap=0;
continue;
}
for(i=0;i<t;i++)
{
if(com(t,i)==0)
{
leap=1;
}
}
t++;
}
return 0;
}
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.
Note: 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
分析:
字符串匹配。
暴力可过。
代码:
#include<stdio.h>
#include<string.h>
char str[100][100];
int com(int t,int x)
{
int n,m,i;
n=strlen(str[t]);
m=strlen(str[x]);
n=(n>m)?m:n;
for(i=0;i<n;i++)
{
if(str[t][i]!=str[x][i])
return 1;
}
return 0;
}
int main()
{
int t,leap,i;
t=0;
leap=0;
int cas=0;
while(gets(str[t])!=NULL)
{
if(str[t][0]=='9')
{
cas++;
if(leap)
printf("Set %d is not immediately decodable\n",cas);
else
printf("Set %d is immediately decodable\n",cas);
t=0;
leap=0;
continue;
}
for(i=0;i<t;i++)
{
if(com(t,i)==0)
{
leap=1;
}
}
t++;
}
return 0;
}
相关文章推荐
- 20145110 《Java程序设计》第三次实验报告
- [CODEVS2800]送外卖(状压dp)
- javascript字母大小写转换的4个函数详解
- Flink中task之间的数据交换机制
- HDU 4183 网络流
- Java 占位符
- Genymotion 启动报错
- 第一冲刺阶段工作总结04
- 团队冲刺07
- linux环境下MySQL的日志监控
- 错误:the public type XXX must be defined in its own file.
- C++学习(二)——指针与动态内存分配
- 152. Maximum Product Subarray
- Servlet课程0424(三) 通过继承HttpServlet来开发Servlet
- 说一下linux中shell的后台进程与前台进程
- 二叉树的镜像
- Jquery基本知识
- 二维数组,矩形数组 集合
- poj3414 Pots BFS
- HDU5671Matrix(矩阵行列交换)