(数据结构)前缀码判定

  • Post author:
  • Post category:其他




(数据结构)前缀码判定

前缀码:任何一个字符的编码都不是同一字符集中另一个字符的编码的前缀。

请编写一个程序,判断输入的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



版权声明:本文为What_If_I原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。