非前缀编码
Description
有很多方法可以实现使用2进制序列对字符进行编码,比如典型的Huffman编码,如果在对字符的2进制编码中不存在某一个字符的编码是另一个字符编码的前缀,那么就称这种编码方式为非前缀编码,Huffman编码就是一种非前缀编码。比如 A:00 B:10 C:0100 D:0101 则这种编码为非前缀编码;A:01 B:10 C:010 D:0000,则这种编码为前缀编码。
请写一个程序,判断编码是前缀编码还是非前缀编码。
输入:
第一行是一个整数K,表示有多少个测试用例,以后每行一个测试用例。每个测试用例为若干个字符串,字符串之间有空格隔开(最大长度不超过1000)。
输出:
每行输出一个测试用例的结果。如果是非前缀编码输出Yes,否则输出No。
Sample Input
2
01 10 0010 0000
01 10 010 0000
Sample Output
Yes
No
#include<iostream>
#include<stdlib.h>
#define N 1000
using namespace std;
char str[N][N];
int len[N];
int cmp(const void *a,const void *b)
{
return strcmp((char*)a,(char*)b);
}
bool check(int i)
{
int k=len[i],j=0;
while(j<k)
if(str[i][j++]!=str[i+1][j++])
return false;
return true;
}
int main()
{
int k;
cin>>k;
while(k--)
{
scanf("%s",str[0]);
int n=1;
int flag=false;
while(getchar()!='\n')
{
scanf("%s",str[n++]);
}
qsort(str,n,sizeof(str[0]),cmp);
len[0]=strlen(str[0]);
int i=0;
for(i=1;i<n;i++)
{
len[i]=strlen(str[i]);
if(len[i-1]>len[i])
continue;
else
{
if(check(i-1))
{
flag=true;
break;
}
}
}
if(flag)
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
}
return 0;
}
分享到:
相关推荐
在Windows环境中,ACM提供了一套API,使得开发者能够访问各种音频编码器,实现音频格式的转换和压缩。 首先,我们要了解PCM(Pulse Code Modulation)是未压缩的数字音频格式,其中每个采样点都对应于原始模拟信号...
这个“基于C++实现的ACM竞赛常用模板”是一个集成了ACM比赛常见问题解决方案的代码库,可以帮助参赛者快速理解和解决各种竞赛题目。 首先,模板通常包括基础数据结构和算法的实现,例如: 1. **排序算法**:快速...
《ACM ICPC程序设计与分析(C++实现)》是一本专为参与ACM国际大学生程序设计竞赛(International Collegiate Programming Contest, 简称ICPC)的参赛者及对此领域感兴趣的程序员编写的指导书籍。书中深入探讨了在...
详细讲述了acm的编程及各种算法知识,书中代码全部用c++实现,对c++泛型编程也有着极大地帮助
【标题】"北大acm_p1001试题c++版"所指的是一道源自北京大学ACM(国际大学生程序设计竞赛)的编程题目,它使用C++语言编写。ACM竞赛是全球知名的大学生编程比赛,旨在提升参赛者的算法设计、问题解决以及编程能力。...
**基于C++的ACM模板**是用于解决算法竞赛(如国际大学生程序设计竞赛ICPC或ACM/ICPC)中的编程问题的一种高效框架。在这些竞赛中,参赛者需要编写程序来解决各种数学和逻辑问题,速度和准确性是关键。C++语言因其...
这是一道比较经典的剪枝题目,如果不仔细考虑到 题目特性,就不能了解到搜索的速度
C++ API则可能是指一个特定的C++库,用于方便在ACM竞赛中快速实现某些通用功能,如输入输出处理、矩阵运算、字符串操作等。在ACM竞赛中,效率至关重要,因此这样的库能帮助参赛者节省时间,避免重复造轮子,专注于...
1. `lameACM.acm`:这是核心的ACM驱动文件,包含了LAME3.92的编码算法,通过Windows的音频系统,可以与其他音频处理软件无缝集成,实现快速的MP3编码。 2. `说明.htm`:这个文件提供了关于LAME3.92 ACM版的详细使用...
在ACM初级学习资料中,主要分为三个部分:入门篇、算法篇和实践篇,涵盖了C++编程的基础、算法知识以及通过实际问题的解决来深化理解。以下是对这些知识点的详细说明: 一、入门篇 1. ACM国际大学生程序设计竞赛...
《经典ACM题“Gone Fishing”的C++源代码解析》 ACM竞赛中的题目“Gone Fishing”是一道涉及枚举与贪心算法的经典问题。该题目要求参赛者设计算法,帮助John在一系列湖泊中钓鱼,使得他能获得最大的总鱼数。问题的...
ACM程序设计是基于C++的一种应用 ACM程序设计以及C++的内部类以及应用的实例与概述
### ACM&C++实用技巧与模板库 #### 一、引言 在计算机科学领域,特别是针对ACM(Association for Computing Machinery)竞赛等编程比赛,掌握高效且简洁的编程技巧至关重要。C++作为这类比赛中最常用的语言之一,...
【标签】"ACM代码300道" 是一个关键词,表明这个压缩包是针对ACM竞赛训练的,其中包含300个不同的编程挑战,每个挑战都有相应的C++实现。 【压缩包子文件的文件名称列表】中的 "0506010237" 很可能是题目编号或者...
总的来说,这个基于C++的ACM-ICPC模板是参赛者在备赛过程中必不可少的工具,它可以帮助参赛者专注于算法设计,而不需要花费过多精力在代码实现的细节上。通过学习和使用这套模板,选手可以提升自己的编程效率,提高...
**KMP算法实现模板(C++版) ACM算法** KMP(Knuth-Morris-Pratt)算法是一种在文本字符串中查找子串匹配的有效方法,尤其适用于已经预处理了模式串(子串)的匹配信息。它是由D.E. Knuth、V. Morris和J.H. Pratt...
本篇文章旨在详细介绍ACM竞赛中常用的C++算法模板,以及如何应用这些模板解决典型问题。 首先,背包问题是算法竞赛中非常常见的问题类型,它可以细分为多种子问题,如01背包、完全背包、多重背包等。其核心思想是...
acm吃糖果的题目,自己根据提示写的比较简单的代码,欢迎指正
ACM模板和一些题目的代码实现c++源码.zipACM模板和一些题目的代码实现c++源码.zipACM模板和一些题目的代码实现c++源码.zipACM模板和一些题目的代码实现c++源码.zipACM模板和一些题目的代码实现c++源码.zipACM模板和...
标题中的"acm.zip_C++_ZGRV_quickzl2_stiff1tu"指的是一个关于ACM(国际大学生程序设计竞赛,简称ICPC)的压缩文件,主要使用C++编程语言,包含了ZGRV算法、quickzl2和stiff1tu这两个特定的算法或方法。这些元素可能...