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

目录

  • T1. 统计误差范围内的数
    • 思路分析
  • T2. 全在其中
    • 思路分析
  • T3. Lab 杯
    • 思路分析
  • T4. 有趣的跳跃
    • 思路分析
  • T5. 反反复复
    • 思路分析

T1. 统计误差范围内的数

统计一个整数序列中与指定数字 m m m 误差范围小于等于 x x x 的数的个数。

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

  • 输入
    输入包含三行:
    第一行为 n n n,表示整数序列的长度, n ≤ 100 n \le 100 n100
    第二行为 n n n 个整数,整数之间以一个空格分开;
    第三行包含 2 2 2 个整数,为指定的整数 m m m,误差范围 x x x
  • 输出
    输出为 n n n 个数中与指定数字 m m m 误差范围小于等于 x x x 的数的个数。
  • 样例输入
    5
    1 2 3 4 5
    3 1
    
  • 样例输出
    3
    
  • 提示
    样例中 2 2 2 3 3 3 4 4 4 都满足条件,故答案为 3 3 3

思路分析

此题考查一维数组的查找与统计,属于入门题。

此题与 2021 年 12 月二级 T1 类似,将给定数据存储在数组中之后,依次遍历每一个元素,检测其是否介于 m − x ∼ m + x m-x \sim m+x mxm+x 范围内,若是,则计数器变量累加 1 1 1,最后输出计数器变量的值即可。

/** Name: T1.cpp* Problem: 统计误差范围内的数* Author: Teacher Gao.* Date&Time: 2024/11/15 21:40*/#include <iostream>using namespace std;int main()
{int n, a[105], m, x;cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}cin >> m >> x;int tot = 0;for (int i = 1; i <= n; i++) {if (m - x <= a[i] && a[i] <= m + x) {tot++;}}cout << tot;return 0;
}

T2. 全在其中

你设计了一个新的加密技术,可以用一种聪明的方式在一个字符串的字符间插入随机的字符串从而对信息进行编码。由于专利问题,我们将不会详细讨论如何在原有信息中产生和插入字符串。不过,为了验证你的方法,有必要写一个程序来验证原来的信息是否全在最后的字符串之中。

给定两个字符串 s s s t t t,你需要判断 s s s 是否是 t t t 的 “子列”。也就是说,如果你去掉 t t t 中的某些字符,剩下字符将连接而成为 s s s

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

  • 输入
    输入包括多个测试样例。每一个都是由空格分隔的由字母数字 ASCII \text{ASCII} ASCII 字符组成的两个特定的字符串 s s s t t t s s s t t t 的长度不超过 100000 100000 100000
  • 输出
    对于每个测试样例,如果 s s s t t t 的 “子列”,则输出 Yes,否则输出 No
  • 样例输入
    sequence subsequence
    person compression
    VERDI vivaVittorioEmanueleReDiItalia
    caseDoesMatter CaseDoesMatter
    
  • 样例输出
    Yes
    No
    Yes
    No
    

思路分析

此题考查字符串遍历与查找,属于入门题。

我们可以依次遍历字符串 s s s 中的每一个字符 s i s_i si,在 t t t 中查找 s i s_i si 是否存在。这里需要设置一个变量 p p p 表示每一个 s i s_i si 开始查找的位置,初始值为 0 0 0,再设置一个标记变量 f l a g flag flag 表示是否查找成功,初始值为 t r u e true true。若在 t t t 中查找到 s i s_i si,则更新下一个字符开始查找的位置,若未找到,则将 f l a g flag flag 置为 f a l s e false false 并结束查找。之后根据 f l a g flag flag 变量的值输出 YesNo

至于不定项输入,使用 while (cin >> ...) 即可。

/** Name: T2.cpp* Problem: 全在其中* Author: Teacher Gao.* Date&Time: 2024/11/15 21:46*/#include <iostream>
#include <string>using namespace std;int main()
{string s, t;while (cin >> s >> t) {int len = s.length(), p = 0;bool flag = true;for (int i = 0; i < len; i++) {int tmp = t.find(s[i], p);if (tmp == -1) {flag = false;break;}p = tmp + 1;}if (flag) cout << "Yes\n";else cout << "No\n";}return 0;
}

T3. Lab 杯

Lab \text{Lab} Lab 杯” 乒乓球赛就要在 PKU \text{PKU} PKU 的实验室之间举行了。人工智能实验室的学生都是乒乓球的狂热分子,都强烈希望代表实验室去比赛。但是有余名额限制,他们之中只能由一个人被选作代表。

为了让选择的过程公平,他们决定打一次单循环赛,每一对学生之间都打一场五局三胜的比赛。赢得最多比赛的人就将代表实验室去比赛。现在 Ava \text{Ava} Ava 手里有一份表,表里面记录了每一场比赛的比分。她应该让谁去比赛?

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

  • 输入
    输入包含一组测试数据。
    第一行包含 n n n 2 ≤ n ≤ 100 2 ≤ n ≤ 100 2n100),表示实验室里学生的数目。
    接下来给出一个 n × n n × n n×n 矩阵 A A A。矩阵的每一个元素都是 0 0 0 1 1 1 2 2 2 3 3 3 中的一个。第 i i i 行第 j j j 列的元素 a i j a_{ij} aij 是第 i i i 个学生在和第 j j j 个学生的比赛中赢的局数。 a i j a_{ij} aij a j i a_{ji} aji i ≠ j i ≠ j i=j)正好有一个是 3 3 3,另外一个小于 3 3 3。矩阵的所有对角线元素都是 0 0 0
  • 输出
    输出赢了最多比赛的学生的编号。如果有平分,选择编号最小的。
  • 样例输入
    4
    0 0 3 2
    3 0 3 1
    2 2 0 2
    3 3 3 0
    
  • 样例输出
    4
    

思路分析

此题考查题目信息提取的能力,以及打擂台思想,属于入门题。

按行统计第 i i i 个学生获胜的场数,即 3 3 3 的个数,然后比较所有学生的获胜场数,输出获胜场数最多的学生编号即可。

/** Name: T3.cpp* Problem: Lab 杯* Author: Teacher Gao.* Date&Time: 2024/11/15 22:07*/#include <iostream>using namespace std;int main(){int n, x;int ans_id, ans_num = 0;cin >> n;for (int i = 1; i <= n; i++) {int tot = 0;for (int j = 1; j <= n; j++) {cin >> x;if (x == 3) tot++;}if (tot > ans_num) {ans_num = tot;ans_id = i;}}cout << ans_id;return 0;
}

T4. 有趣的跳跃

一个长度为 n n n n > 0 n>0 n>0)的序列中存在 “有趣的跳跃” 当且仅当相邻元素的差的绝对值经过排序后正好是从 1 1 1 ( n − 1 ) (n-1) (n1)。例如, 1 4 2 3 1\ 4\ 2\ 3 1 4 2 3 存在 “有趣的跳跃”,因为差的绝对值分别为 3 , 2 , 1 3,2,1 3,2,1。当然,任何只包含单个元素的序列一定存在 “有趣的跳跃”。你需要写一个程序判定给定序列是否存在 “有趣的跳跃”。

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

  • 输入
    一行,第一个数是 n n n 0 < n < 3000 0 < n < 3000 0<n<3000),为序列长度,接下来有 n n n 个整数,依次为序列中各元素,各元素的绝对值均不超过 1 0 9 10^9 109
  • 输出
    一行,若该序列存在 “有趣的跳跃”,输出 Jolly,否则输出 Not jolly
  • 样例输入
    4 1 4 2 3
    
  • 样例输出
    Jolly
    

思路分析

此题考查桶的思想,属于入门题。

依次将相邻两个元素的差值 x x x 进行标记,在这个过程中,若 x ≥ n x \ge n xn 或者 x x x 已经被标记过,那么就可以确定该序列为 Not jolly。注意差值 x x x 应取绝对值,因为输入序列并不保证递增。

/** Name: T4.cpp* Problem: 有趣的跳跃* Author: Teacher Gao.* Date&Time: 2024/11/15 22:11*/#include <iostream>
#include <cmath>using namespace std;int main() {int n, a[3005] = {0}, b[3005] = {0};cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}for (int i = 2; i <= n; i++) {int x = abs(a[i] - a[i - 1]);if (x >= n || b[x]) {cout << "Not jolly";return 0;}b[x]++;}cout << "Jolly";return 0;
}

T5. 反反复复

Mo \text{Mo} Mo Larry \text{Larry} Larry 发明了一种信息加密方法。他们首先决定好列数,然后将信息(只包含字母)从上往下依次填入各列,并在末尾补充一些随机字母使其成为一个完整的字母矩阵。例如,若信息是 There's no place like home on a snowy night 并且有 5 5 5 列, Mo \text{Mo} Mo 会写成:

t o i o y
h p k n n
e l e a i
r a h s g
e c o n h
s e m o t
n l e w x

注意 Mo \text{Mo} Mo 只会填入字母,且全部是小写形式。在这个例子中, Mo \text{Mo} Mo 用字母 x 填充了信息使之成为一个完整的矩阵,当然他使用任何字母都是可以的。

Mo \text{Mo} Mo 根据这个矩阵重写信息:首先从左到右写下第一行,然后从右到左写下第二行,再从左到右写下第三行 … \dots 以此左右交替地从上到下写下各行字母,形成新的字符串。这样,例子中的信息就被加密为:toioynnkpheleaigshareconhtomesnlewx

你的工作是帮助 Larry \text{Larry} Larry 从加密后的信息中还原出原始信息(包括填充的字母)。

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

  • 输入
    第一行包含一个整数(范围 2 2 2 20 20 20),表示使用的列数。
    第二行是一个长度不超过 200 200 200 的字符串。
  • 输出
    一行,即原始信息。
  • 样例输入
    5
    toioynnkpheleaigshareconhtomesnlewx
    
  • 样例输出
    theresnoplacelikehomeonasnowynightx
    

思路分析

此题考查字符串操作,属于入门题。

我们完全可以将这个字符串当成一个二维矩阵来处理,注意好下标变换即可。首先将字符串 s s s 中偶数行的子串进行翻转,然后按列进行输出。

/** Name: T5.cpp* Problem: 反反复复* Author: Teacher Gao.* Date&Time: 2024/11/15 22:21*/#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;int main()
{int n;char s[205];cin >> n >> s;int len = strlen(s);// 翻转偶数行子串for (int i = n; i < len; i += 2*n) {reverse(s + i, s + i + n);}// 按列输出字符for (int i = 0; i < n; i++) {for (int j = i; j < len; j += n) {cout << s[j];}}	return 0;
} 

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

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

相关文章

ssm114基于SSM框架的网上拍卖系统的设计与实现+vue(论文+源码)_kaic

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff0c;商品拍卖当然也不能排除在外&#xff0c;随着商品拍卖管理的不断成熟&#xff0c;它彻底改变了过去传统的经营管理方式&#xff0c;不仅使商品…

智慧农业的前世今生

智慧农业是将现代信息技术与传统农业相结合的新型农业生产方式&#xff0c;其发展历程如下&#xff1a; 20世纪70年代末&#xff0c;以美国为代表的欧美国家率先开始农业信息化、智能化的应用研究&#xff0c;以农业专家系统为代表的农业信息化应用开始在农业生产领域萌芽。我…

BERT模型核心组件详解及其实现

摘要 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是一种基于Transformer架构的预训练模型&#xff0c;在自然语言处理领域取得了显著的成果。本文详细介绍了BERT模型中的几个关键组件及其实现&#xff0c;包括激活函数、变量初始化…

Transformer中的算子:其中Q,K,V就是算子

目录 Transformer中的算子 其中Q,K,V就是算子 一、数学中的算子 二、计算机科学中的算子 三、深度学习中的算子 四、称呼的由来 Transformer中的算子 其中Q,K,V就是算子 “算子”这一称呼源于其在数学、计算机科学以及深度学习等多个领域中的广泛应用和特定功能。以下是…

ElementPlus el-upload上传组件on-change只触发一次

ElementPlus el-upload上传组件on-change只触发一次 主要运用了:on-exceed方法 废话不多说&#xff0c;直接上代码 <el-uploadclass"avatar-uploader"action"":on-change"getFilesj":limit"1":auto-upload"false"accep…

厦大南洋理工最新开源,一种面向户外场景的特征-几何一致性无监督点云配准方法

导读 本文提出了INTEGER&#xff0c;一种面向户外点云数据的无监督配准方法&#xff0c;通过整合高层上下文和低层几何特征信息来生成更可靠的伪标签。该方法基于教师-学生框架&#xff0c;创新性地引入特征-几何一致性挖掘&#xff08;FGCM&#xff09;模块以提高伪标签的准确…

Conda环境与Ubuntu环境移植详解

Conda环境与Ubuntu环境移植详解 在计算机科学中&#xff0c;环境迁移是一项常见的任务&#xff0c;特别是对于使用Anaconda等工具进行数据科学和机器学习的开发人员。迁移环境不仅能够帮助开发者在不同设备间无缝切换&#xff0c;还能确保项目依赖的一致性&#xff0c;从而避免…

【深度学习基础】PyCharm anaconda PYTorch python CUDA cuDNN 环境配置

这里写目录标题 PyCharm 安装anaconda安装PYTorch安装确定python版本CUDA安装cuDNN安装检验环境是否配置成功参照:PyCharm 安装 官网下载 anaconda安装 官网下载 :https://www.anaconda.com/download 配置环境变量,增加 D:\WorkSoftware\Install\Anaconda3 D:\WorkSoftw…

生产环境中AI调用的优化:AI网关高价值应用实践

随着越来越多的组织将生成式AI引入生产环境&#xff0c;他们面临的挑战已经超出了初步实施的范畴。如果管理不当&#xff0c;扩展性限制、安全漏洞和性能瓶颈可能会阻碍AI应用的推广。实际问题如用户数据的安全性、固定容量限制、成本管理和延迟优化等&#xff0c;需要创新的解…

Redis 概 述 和 安 装

安 装 r e d i s: 1. 下 载 r e dis h t t p s : / / d o w n l o a d . r e d i s . i o / r e l e a s e s / 2. 将 redis 安装包拷贝到 /opt/ 目录 3. 解压 tar -zvxf redis-6.2.1.tar.gz 4. 安装gcc yum install gcc 5. 进入目录 cd redis-6.2.1 6. 编译 make …

SpringBoot 2.2.10 无法执行Test单元测试

很早之前的项目今天clone现在&#xff0c;想执行一个业务订单的检查&#xff0c;该检查的代码放在test单元测试中&#xff0c;启动也是好好的&#xff0c;当点击对应的方法执行Test的时候就报错 tip&#xff1a;已添加spring-boot-test-starter 所以本身就引入了junit5的库 No…

Dubbo 3.2 源码导读

Dubbo 是一个高性能的 Java RPC 框架&#xff0c;广泛用于构建分布式服务。Dubbo 3.2 版本引入了一些新的特性和改进&#xff0c;是一个值得深入研究的版本。以下是对 Dubbo 3.2 源码的导读&#xff0c;帮助你理解其架构和设计。 1. 源码获取 从 GitHub 上获取 Dubbo 3.2 的源…

[项目代码] YOLOv5 铁路工人安全帽安全背心识别 [目标检测]

YOLOv5是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv5具有更高的…

Flutter:Widget生命周期

StatelessWidget&#xff1a;无状态部件的生命周期 import package:flutter/material.dart;void main() {runApp(App()); }class App extends StatelessWidget {overrideWidget build(BuildContext context) {return MaterialApp(home: MyHomePage(title: MyHome),);} }class M…

SIM Jacker攻击分析

简介&#xff1a; 2019年9月12日&#xff0c;AdaptiveMobile Security公布了一种针对SIM卡ST Browser的远程攻击方式&#xff1a;Simjacker。攻击者使用普通手机发送特殊构造的短信即可远程定位目标&#xff0c;危害较大 。sim卡的使用在手机上的使用非常普遍&#xff0c;所以…

Python 操作 Elasticsearch 全指南:从连接到数据查询与处理

文章目录 Python 操作 Elasticsearch 全指南&#xff1a;从连接到数据查询与处理引言安装 elasticsearch-py连接到 Elasticsearch创建索引插入数据查询数据1. 简单查询2. 布尔查询 更新文档删除文档和索引删除文档删除索引 批量插入数据处理分页结果总结 Python 操作 Elasticse…

【linux】centos7 换阿里云源

相关文章 【linux】CentOS 的软件源&#xff08;Repository&#xff09;学习-CSDN博客 查看yum配置文件 yum的配置文件通常位于/etc/yum.repos.d/目录下。你可以使用以下命令查看这些文件&#xff1a; ls /etc/yum.repos.d/ # 或者 ll /etc/yum.repos.d/备份当前的yum配置文…

AI 写作(八)实战项目一:自动写作助手(8/10)

一、项目背景与需求分析 &#xff08;一&#xff09;写作需求的多样化 在互联网普及的今天&#xff0c;人们对写作的需求呈现出前所未有的多样化态势。无论是学术论文、新闻报道&#xff0c;还是社交媒体的动态更新、网络小说的创作&#xff0c;都离不开高质量的写作。以学术研…

微信小程序内嵌h5页面(uniapp写的),使用uni.openLocation无法打开页面问题

1.问题 微信小程序内嵌h5页面(uniapp写的),使用uni.openLocation打开地图页面后,点击该页面下方“到这里”按钮,显示无法打开。如下图: 3.解决方案 在内嵌h5中不使用uniapp的api打开地图,而在h5页面事件处理程序中去跳转新的小程序页面,在该新页面去使用微信小程序…

SpringCloud核心组件(五)

文章目录 Gateway一. 概述简介1. Gateway 是什么2. 什么是网关?3.Gateway 和 Nginx 两个网关的区别什么是流量入口&#xff1f; 4.Gateway 能干嘛5.gateway 三大核心概念6.运行方式 二. 入门案例a.创建gateway模块&#xff0c;在pom.xml中引入依赖b.创建启动类GatewayApplicat…