1. 前缀码判定

题目

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

请编写一个程序,判断输入的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以文本方式显示
  1. 5↵
  2. 00↵
  3. 01↵
  4. 10↵
  5. 110↵
  6. 111↵
以文本方式显示
  1. YES↵
1秒64M0
测试用例 2以文本方式显示
  1. 5↵
  2. 00↵
  3. 01↵
  4. 10↵
  5. 110↵
  6. 11↵
以文本方式显示
  1. 11↵
1秒64M0
测试用例 3以文本方式显示
  1. 5↵
  2. 00↵
  3. 01↵
  4. 10↵
  5. 11↵
  6. 111↵
以文本方式显示
  1. 111↵
1秒64M0
测试用例 4以文本方式显示
  1. 5↵
  2. 111↵
  3. 110↵
  4. 10↵
  5. 01↵
  6. 00↵
以文本方式显示
  1. YES↵
1秒64M0
测试用例 5以文本方式显示
  1. 8↵
  2. 00↵
  3. 010↵
  4. 0110↵
  5. 0111↵
  6. 10↵
  7. 110↵
  8. 1110↵
  9. 1111↵
以文本方式显示
  1. YES↵
1秒64M0
测试用例 6以文本方式显示
  1. 8↵
  2. 00↵
  3. 010↵
  4. 0110↵
  5. 0111↵
  6. 10↵
  7. 11↵
  8. 1110↵
  9. 111↵
以文本方式显示
  1. 1110↵
1秒64M0

C++代码

#include <iostream>  
#include <vector>  using namespace std;  // 定义二叉树的节点,包含一个布尔型成员变量 is_end 和一个 TreeNode 指针数组 next  
struct TreeNode {  bool is_end;  // 布尔型变量,表示当前节点是否是一个字符串的结束  TreeNode* next[2];  // TreeNode 指针数组,表示下一个节点  TreeNode() : is_end(false) {  // 构造函数,初始化变量  next[0] = nullptr;  // 下一个节点的第一部分设为空  next[1] = nullptr;  // 下一个节点的第二部分设为空  }  
};  // 插入函数:在二叉树中插入一个字符串  
bool insert(TreeNode* root, string& code) {  TreeNode* node = root;  for (int i = 0; i < code.size(); ++i) {  int index = code[i] - '0';  // 计算字符对应的索引  if (!node->next[index]) {  // 判断子节点是否为空  node->next[index] = new TreeNode();  }  node = node->next[index];  // 移动到下一个子节点  if (node->is_end) {  // 如果此节点是字符串的结束,则插入失败  return false;  }  }  node->is_end = true;  // 标记插入的字符串结束的位置  return !node->next[0] && !node->next[1];  // 插入成功条件是当前节点无子节点  
}  // 主函数  
int main() {  int n;  cin >> n;  // 输入字符串的数量  TreeNode* root = new TreeNode();  // 创建新的二叉树  for (int i = 0; i < n; ++i) {  string code;  cin >> code;  // 读取待插入的字符串  if (!insert(root, code)) {  // 如果插入失败(返回 false)  cout << code << endl;  // 输出字符串  delete root;  // 释放内存  return 0;  // 程序错误退出  }  }  cout << "YES" << endl;  // 所有字符串都插入成功,输出:YES  delete root;  // 释放内存  return 0;  // 程序正常退出  
}  
跳至...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/116422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客网刷题-(2)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

jvm垃圾回收算法有哪些及原理

目录 垃圾回收器1 Serial收集器2 Parallel收集器3 ParNew收集器4 CMS收集器5 G1回收器三色标记算法标记算法的过程三色标记算法缺陷多标漏标 垃圾回收器 垃圾回收机制&#xff0c;我们已经知道什么样的对象会成为垃圾。对象回收经历了什么——垃圾回收算法。那么谁来负责回收垃…

华为云 CodeArts Snap 智能编程助手 PyCharm 插件安装与使用指南

1 插件安装下载 1.1 搜索插件 打开 PyCharm&#xff0c;选择 File&#xff0c;点击 Settings。 选择 Plugins&#xff0c;点击 Marketplace&#xff0c;并在搜索框中输入 Huawei Cloud CodeArts Snap。 1.2 安装插件 如上图所示&#xff0c;点击 Install 按钮安装 Huawei Cl…

2. 计算WPL

题目 Huffman编码是通信系统中常用的一种不等长编码&#xff0c;它的特点是&#xff1a;能够使编码之后的电文长度最短。 更多关于Huffman编码的内容参考教材第十章。 输入&#xff1a; 第一行为要编码的符号数量n 第二行&#xff5e;第n1行为每个符号出现的频率 输…

npm install报错 缺少python

报错信息&#xff1a; Building:E:tolsnvmnodesnodeexe : ode emos ant-desig-we-eos odemodules node-gypbintnode-gp.s rebld -verbose -Libsass_ext --Libsas_cflags- lags --libsass_librarygyp info it worked if it ends with ok gyp verb cli [ gyp verb cliE: toolsnv…

一步一步认知机器学习

1&#xff0c;前言 之前学习并且实操了一些算法框架用来探索相关方向的可能性&#xff0c;但是总不了解相关的步骤。因为一步一步按照别人给出的步骤去操作&#xff0c;解决一些操作时出现的问题&#xff0c;基本可以达到目的。但是这个也基本限制了在那个框架而已。对于算法还…

Socket 是什么? 总结+详解

文章摘要&#xff1a;Socket 套接字 编程接口 netstat-ano 创建 建立连接 断开 删除 1.Socket 是什么 Socket &#xff1a;套接字&#xff08;socket&#xff09;是一个抽象层&#xff0c;应用程序可以通过它发送或接收数据&#xff0c;可对其进行像对文件一样的打开、读写和…

SpringBoot的日志系统(日志分组、文件输出、滚动归档)

[toc](目录) > SpringBoot3需要jdk17 # 1. 简介 1. Spring5及以后Spring自己实现了commons-logging&#xff0c;来作为内部的日志。日志的jar包是org.springframework:spring-jcl:6.0.10。查看org.apache.commons.logging.LogAdapter Java package org.apache.commons.log…

如何把Elasticsearch中的数据导出为CSV格式的文件

前言| 本文结合用户实际需求用按照数据量从小到大的提供三种方式从ES中将数据导出成CSV形式。本文将重点介Kibana/Elasticsearch高效导出的插件、工具集&#xff0c;通过本文你可以了解如下信息&#xff1a; 1&#xff0c;从kibana导出数据到csv文件 2&#xff0c;logstash导…

VMware vCenter Server 6.7安装过程记录

0、前言 最近由于一些原因需要安装测试VMware ESXi&#xff0c;无奈所有服务器都是十几年前的&#xff0c;配置低也不支持。后来通过VMware兼容性列表查询&#xff0c;快要放弃的时候发现唯一一台Dell R420&#xff0c;如获至宝。通过查询得知最高支持到6.5 U3&#xff0c;好在…

十三水中各种牌型判断LUA版

近期回归程序行业&#xff0c;由于业务需求需要做十三水游戏&#xff0c;什么是十三水就不在多讲&#xff0c;下面是判断十三水牌型的方法&#xff08;带大小王&#xff09; GetSSSPaiType {}; local this GetSSSPaiType; local huaseTable {}; local numTable {}; functi…

在亚马逊购买产品时怎么选择自动收货方式

在亚马逊购买产品时&#xff0c;通常可以在下单时选择不同的收货方式&#xff0c;包括自动收货方式。以下是一般的购买流程&#xff1a; 登录亚马逊账号&#xff1a;打开网站&#xff0c;登录账号&#xff0c;如果没有账号&#xff0c;可以先创建一个。 浏览和添加商品&#…

SpringBoot原理篇

SpringBoot原理篇 ​ 其实从本人的角度出发&#xff0c;看了这么多学习java的小伙伴的学习过程&#xff0c;个人观点&#xff0c;不建议小伙伴过早的去研究技术的原理。原因有二&#xff1a;一&#xff0c;先应用熟练&#xff0c;培养技术应用的条件反射&#xff0c;然后再学原…

v4l2-ioctl.c的一些学习和整理

可以发现&#xff0c;这个宏用的很好&#xff0c;简洁易扩展&#xff0c;自己写代码可以学习下 #define IOCTL_INFO(_ioctl, _func, _debug, _flags) \[_IOC_NR(_ioctl)] { \.ioctl _ioctl, \.flags _flags, \.name #_ioctl, \.func _func, \.debug _…

element table中嵌套el-select 无法选择问题

<el-table-column align"left" label"姓名" show-overflow-tooltip :key"tableKey"><template slot-scope"scope"><el-select placeholder"请选择" :disabled"!saveButton" v-model"scope.ro…

多用户多回路宿舍用电管理解决方案-安科瑞黄安南

01 引言 近几年来&#xff0c;因违规使用大功率恶性负载电器导致宿舍失火的安全事故在各大高校时有发生&#xff0c;给学生和学校都带来了巨大的损失。北京大学、哈尔滨工业大学、上海商学院以及俄罗斯人民友谊大学等高校学生公寓发生的火灾给高校学生公寓的安全用电敲响…

element-ui 图片压缩上传

export const compressImgNew (file) > {return new Promise(resolve > {const reader new FileReader()const image new Image()image.onload (imageEvent) > {const canvas document.createElement(canvas) // 创建画布const context canvas.getContext(2d) …

车载网关通信能力解析——SV900-5G车载网关推荐

随着车联网的发展,各类车载设备对车载网关的需求日益增长。车载网关作为车与车、车与路、车与云之间连接的关键设备,其通信能力直接影响整个系统的性能。本文将详细解析车载网关的通信能力,并推荐性价比高的SV900-5G车载网关。 链接直达&#xff1a;https://www.key-iot.com/i…

初探亚马逊 AI 编程助手 CodeWhisperer

前言 4月18日&#xff0c;亚马逊云科技宣布&#xff0c;实时 AI 编程助手 Amazon CodeWhisperer 正式可用,同时推出的还有供所有开发人员免费使用的个人版&#xff08;CodeWhisperer Individual&#xff09;。Amazon CodeWhisperer 是一个通用的、由机器学习驱动的代码生成器&…

Jenkins CLI二次开发工具类

使用Jenkins CLI进行二次开发 使用背景 公司自研CI/DI平台&#xff0c;借助JenkinsSonarQube进行代码质量管理。对接版本 Jenkins版本为&#xff1a;Version 2.428 SonarQube版本为&#xff1a;Community EditionVersion 10.2.1 (build 78527)技术选型 Java对接Jenkins有第…