2021 年 9 月青少年软编等考 C 语言六级真题解析

news2025/3/11 15:21:14

目录

  • T1. 合法出栈序列
    • 思路分析
  • T2. 奇怪的括号
    • 思路分析
  • T3. 区间合并
    • 思路分析
  • T4. 双端队列
    • 思路分析

T1. 合法出栈序列

题目链接:SOJ D1110

给定一个由不同小写字母构成的长度不超过 8 8 8 的字符串 x x x,现在要将该字符串的字符依次压入栈中,然后再全部弹出。要求左边的字符一定比右边的字符先入栈,出栈顺序无要求。再给定若干字符串,对每个字符串,判断其是否是可能的 x x x 中的字符的出栈序列。

时间限制:1 s
内存限制:64 MB

  • 输入
    第一行是原始字符串 x x x
    后面有若干行,每行一个字符串。
  • 输出
    对除第一行以外的每个字符串,判断其是否是可能的出栈序列。如果是,输出 YES,否则,输出 NO
  • 样例输入
    abc
    abc
    bca
    cab
    
  • 样例输出
    YES
    YES
    NO
    

思路分析

此题考查栈模拟,属于基础题。

可以依次将入栈序列 x x x 中的元素入栈,每入栈一个元素之后,就检测栈顶元素是否为当前出栈序列 s t r str str 的第一个,如果是,则进行出栈操作,并且删除出栈序列 s t r str str 的第一个,重复以上检测操作直到栈为空,或者栈顶元素与出栈序列 s t r str str 的第一个元素不一致。当入栈序列 x x x 中的所有元素全入栈,并且做完检测之后,如果栈空,则说明该出栈序列合法,否则不合法。

/*
 * Name: T1.cpp
 * Problem: 合法出栈序列
 * Author: Teacher Gao.
 * Date&Time: 2025/03/09 09:30
 */

#include <iostream>
#include <stack>

using namespace std;

int main()
{
   
    ios::sync_with_stdio(false);
    cin.tie(0);

    string x, str;
    cin >> x;

    while (cin >> str) {
   
        stack<char> S;
        for (int i = 0, j = 0; i < x.size(); i++) {
   
            S.push(x[i]);
            while (!S.empty() && S.top() == str[j]) {
   
                S.pop(); j++;
            }
        }

        if (S.empty()) cout << "YES\n";
        else           cout << "NO\n";
    }

    return 0;
}

T2. 奇怪的括号

题目链接:SOJ D1111

某天小 A 和同学在课堂上讨论到:“栈这种数据结构真是太优美了,既简单用途又广泛。” 小 B 仰慕小 A 许久,于是他拿出了自己在网上抄写的一道题问小 A,如何判断括号是否匹配呢?

时间限制:1 s
内存限制:64 MB

  • 输入
    多组数据,每组数据占一行,且都是由 ()[]*/ 这六种字符组成。
  • 输出
    每组数据输出一行,如果括号能匹配成功,输出 True,否则输出 False。括号匹配规则是:() 匹配,[] 匹配, /**/ 匹配。如果含有冗余字符也算匹配失败,例如 /***/ 是匹配失败的,因为中间多了一个 *
  • 样例输入
    ()/*[()]*/
    */**/
    
  • 样例输出
    True
    False
    

思路分析

此题考查栈的应用之括号匹配问题,属于基础题。核心思路与 2020 年 9 月三级第三题一致。

麻烦的地方在于此题中需要匹配 C \tt C C++ 中的多行注释符号,一种可行的方案是把所有的 /**/ 都替换为 { },在之后的匹配过程中如果检测到 /*,则说明匹配失败。在替换操作完成之后再进行括号匹配,代码思路会更清晰。示例代码是在括号匹配过程中进行的替换,注意代码中的下标。

/*
 * Name: T2.cpp
 * Problem: 奇怪的括号
 * Author: Teacher Gao.
 * Date&Time: 2025/03/09 12:12
 */

#include <iostream>
#include <stack>

using namespace std;

stack<char> S;

bool check(char ch) {
   
	if (!S.empty() && S.top() == ch) {
   
		S.pop();
		return 1;
	}
	return 0;
}

int main()
{
   
	ios::

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

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

相关文章

Linux:多线程(单例模式,其他常见的锁,读者写者问题)

目录 单例模式 什么是设计模式 单例模式介绍 饿汉实现方式和懒汉实现方式 其他常见的各种锁 自旋锁 读者写者问题 逻辑过程 接口介绍 单例模式 什么是设计模式 设计模式就是一些大佬在编写代码的过程中&#xff0c;针对一些经典常见场景&#xff0c;给定对应解决方案&…

【氮化镓】高输入功率应力诱导的GaN 在下的退化LNA退化

2019年,中国工程物理研究院电子工程研究所的Tong等人基于实验与第一性原理计算方法,研究了Ka波段GaN低噪声放大器(LNA)在高输入功率应力下的退化机制。实验结果表明,在27 GHz下施加1 W连续波(CW)输入功率应力后,LNA的增益下降约1 dB,噪声系数(NF)增加约0.7 dB。进一…

Javaweb后端文件上传@value注解

文件本地存储磁盘 阿里云oss准备工作 阿里云oss入门程序 要重启一下idea&#xff0c;上面有cmd 阿里云oss案例集成 优化 用spring中的value注解

git规范提交之commitizen conventional-changelog-cli 安装

一、引言 使用规范的提交信息可以让项目更加模块化、易于维护和理解&#xff0c;同时也便于自动化工具&#xff08;如发布工具或 Changelog 生成器&#xff09;解析和处理提交记录。 通过编写符合规范的提交消息&#xff0c;可以让团队和协作者更好地理解项目的变更历史和版本…

Java/Kotlin逆向基础与Smali语法精解

1. 法律警示与道德边界 1.1 司法判例深度剖析 案例一&#xff1a;2021年某游戏外挂团伙刑事案 犯罪手法&#xff1a;逆向《王者荣耀》通信协议&#xff0c;修改战斗数据包 技术细节&#xff1a;Hook libil2cpp.so的SendPacket函数 量刑依据&#xff1a;非法经营罪&#xff…

非软件开发项目快速上手:14款管理软件精选

文章介绍了以下14款项目管理系统&#xff1a;1.Worktile&#xff1b;2.Teambition&#xff1b;3.Microsoft Project&#xff1b;4.Forbes&#xff1b;5.WorkOtter&#xff1b;6.Trello&#xff1b;7.Smartsheet&#xff1b;8.Taiga&#xff1b;9.ClickUp&#xff1b;10.Monday.…

夸父工具箱(安卓版) 手机超强工具箱

如今&#xff0c;人们的互联网活动日益频繁&#xff0c;导致手机内存即便频繁清理&#xff0c;也会莫名其妙地迅速填满&#xff0c;许多无用的垃圾信息悄然占据空间。那么&#xff0c;如何有效应对这一难题呢&#xff1f;答案就是今天新推出的这款工具软件&#xff0c;它能从根…

混元图生视频-腾讯混元开源的图生视频模型

混元图生视频是什么 混元图生视频是腾讯混元推出的开源图生视频模型&#xff0c;用户可以通过上传一张图片进行简短描述&#xff0c;让图片动起来生成5秒的短视频。模型支持对口型、动作驱动和背景音效自动生成等功能。模型适用于写实、动漫和CGI等多种角色和场景&#xff0c;…

Debian系统grub新增启动项

参考链接 给grub添加自定义启动项_linux grub定制 启动项名称自定义-CSDN博客 www.cnblogs.com 1. boot里面的grub.cfg 使用vim打开boot里面的grub.cfg sudo vim /boot/grub/grub.cfg 这时候会看到文件最上方的提示 2. 真正配置grub的文件 从刚才看到的文件提示中&#x…

VSCode快捷键整理

VSCode快捷键整理 文章目录 VSCode快捷键整理1-VSCode 常用快捷键1-界面操作2-单词移动3-删除操作4-编程相关5-多光标操作6-文件、符号、函数跳转7-鼠标操作8-自动补全操作9-代码折叠操作 1-VSCode 常用快捷键 1-界面操作 文件资源管理器&#xff1a;Ctrl Shift E 跨文件搜…

刘火良 FreeRTOS内核实现与应用之1——列表学习

重要数据 节点的命名都以_ITEM后缀进行&#xff0c;链表取消了后缀&#xff0c;直接LIST 普通的节点数据类型 /* 节点结构体定义 */ struct xLIST_ITEM { TickType_t xItemValue; /* 辅助值&#xff0c;用于帮助节点做顺序排列 */ struct xLIST_I…

本地部署Navidrome个人云音乐平台随时随地畅听本地音乐文件

文章目录 前言1. 安装Docker2. 创建并启动Navidrome容器3. 公网远程访问本地Navidrome3.1 内网穿透工具安装3.2 创建远程连接公网地址3.3 使用固定公网地址远程访问 前言 今天我要给大家安利一个超酷的私有化音乐神器——Navidrome&#xff01;它不仅让你随时随地畅享本地音乐…

数据集构建与训练前准备

训练数据集目录结构与格式 作者笨蛋学法&#xff0c;先将其公式化&#xff0c;后面逐步自己进行修改&#xff0c;读者觉得看不懂可以理解成&#xff0c;由结果去推过程&#xff0c;下面的这个yaml文件就是结果&#xff0c;我们去推需要的文件夹(名字可以不固定&#xff0c;但是…

jenkins+ant+jmeter生成的测试报告空白

Jenkins能正常构建成功&#xff0c;但是打开Jenkins上的测试报告&#xff0c;则显示空白 在网上找了很多文章&#xff0c;结果跟别人对比测试报告的配置&#xff0c;发现自己跟别人写的不一样 所以跟着别人改&#xff0c;改成一样的再试试 结果&#xff0c;好家伙&#xff0…

利用阿里云Atlas地区选择器与Plotly.js实现数据可视化与交互

在数据科学与可视化领域&#xff0c;交互式图表和地图应用越来越成为数据分析和展示的重要手段。本文将介绍如何结合阿里云Atlas地区选择器与Plotly.js&#xff0c;创建动态交互式的数据可视化应用。 一、阿里云Atlas地区选择器简介 阿里云Atlas是阿里云的一款数据可视化产品…

linux安装java8 sdk,使用 tar.gz安装包手动安装

1. 下载 Java 8 SDK 首先&#xff0c;需要从 Oracle 的官方网站或 OpenJDK 的网站下载 Java 8 的 .tar.gz 文件。并上传到服务器 2. 解压 JDK 下载完成后&#xff0c;使用 tar 命令解压文件。打开服务器终端&#xff0c;然后使用以下命令&#xff1a; tar -xvzf jdk-8uXXX-…

6.聊天室环境安装 - Ubuntu22.04 - elasticsearch(es)的安装和使用

目录 介绍安装安装kibana安装ES客户端使用 介绍 Elasticsearch&#xff0c; 简称 ES&#xff0c;它是个开源分布式搜索引擎&#xff0c;它的特点有&#xff1a;分布式&#xff0c;零配置&#xff0c;自动发现&#xff0c;索引自动分片&#xff0c;索引副本机制&#xff0c;res…

【python爬虫】酷狗音乐爬取练习

注意&#xff1a;本次爬取的音乐仅有1分钟试听&#xff0c;仅作学习爬虫的原理&#xff0c;完整音乐需要自行下载客户端。 一、 初步分析 登陆酷狗音乐后随机选取一首歌&#xff0c;在请求里发现一段mp3文件&#xff0c;复制网址&#xff0c;确实是我们需要的url。 复制音频的…

计算机视觉cv2入门之图像空域滤波(待补充)

空域滤波 空域滤波是指利用像素及像素领域组成的空间进行图像增强的方法。这里之所以用滤波这个词,是因为借助了频域里的概念。事实上空域滤波技术的效果与频域滤波技术的效果可以是等价的&#xff0c;而且有些原理和方法也常借助频域概念来解释。 原理和分类 空域滤波是在图…

游戏引擎学习第149天

今日回顾与计划 在今天的直播中&#xff0c;我们将继续进行游戏的开发工作&#xff0c;目标是完成资产文件&#xff08;pack file&#xff09;的测试版本。目前&#xff0c;游戏的资源&#xff08;如位图和声音文件&#xff09;是直接从磁盘加载的&#xff0c;而我们正在将其转…