(数据结构)前缀码判定
前缀码:任何一个字符的编码都不是同一字符集中另一个字符的编码的前缀。
请编写一个程序,判断输入的n个由1和0组成的编码是否为前缀码。如果这n个编码是前缀码,则输出"YES”;否则输出第一个与前面编码发生矛盾的编码。
输入:
第1行为n(表示下面有n行编码)
第2~n+1行为n个由0或1组成的编码
输出:判断结果
例如,如果输入:
5
00
01
10
110
111
每一个字符均不是其他字符编码的前缀,所以,输出:YES
再如,如果输入:
5
00
01
10
110
11
编码11与前面的编码110的前缀,所以,输出:11
测试用例1:
测试输入:
5↵
00↵
01↵
10↵
110↵
111↵
期待的输出:
YES↵
测试用例2:
测试输入:
5↵
00↵
01↵
10↵
110↵
11↵
期待的输出:
11↵
测试用例3:
测试输入:
5↵
00↵
01↵
10↵
11↵
111↵
期待的输出:
111↵
测试用例4:
测试输入:
5↵
111↵
110↵
10↵
01↵
00↵
期待的输出:
YES↵
测试用例5:
测试输入:
8↵
00↵
010↵
0110↵
0111↵
10↵
110↵
1110↵
1111↵
期待的输出:
YES↵
测试用例6:
测试输入:
8↵
00↵
010↵
0110↵
0111↵
10↵
11↵
1110↵
111↵
期待的输出:
1110↵
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Node
{
int flag;
struct Node *lc;
struct Node *rc;
}*BiTree,BITree;
int main()
{
int n,LEN,i

本文介绍了前缀码的概念,并提供了编写程序判断一组由0和1组成的编码是否为前缀码的方法。通过多个测试用例展示如何判断编码是否冲突,如果所有编码互不为前缀,则输出"YES",否则输出首个发生冲突的编码。
前缀码判定&spm=1001.2101.3001.5002&articleId=107534200&d=1&t=3&u=79171d5f40e04ed58d194f214d682243)
338

被折叠的 条评论
为什么被折叠?



