往年5级考题(c++)

考级在即,这篇文章就来看看往年的c++5级考试真题

逃离迷宫

题目描述

你在一个地下迷宫中找到了宝藏,但是也触发了迷宫机关,导致迷宫将在T分钟后坍塌,为此你需要在T分钟内逃离迷宫,你想知道你能不能逃离迷宫。

迷宫是一个边长为m的正方形,其中"S"表示你所在的位置,"E"表示迷宫出口,"."是可以随意走动的区域,"#"是不可穿行的墙壁,每次你可以耗费1分钟在区域间移动(上下左右四个方向)。

输入格式

输入包含多组数组,第一行是一个整数K(1 <= K <= 10),表示有K组数据。

接下来每组数组包含整数m(2<=m<=10)和整数T,m表示正方形迷宫的边长,T表示坍塌时间。

其后是一个m*m的字符矩阵,包含字符"S", "E", "."和"#"。

输出格式

每组数据输出一行,输出“YES"或者"NO",表示是否可以在坍塌之前逃离(也就是说移动次数是否可以不超过T)。

样例

样例输入

2
4 7 
S...
###.
.#E.
..#.    
3 4
S..
..#
.#E

样例输出
YES

NO

#include <bits/stdc++.h>
using namespace std;struct node
{int x,y,v;node(){};node(int a,int b,int c){x = a;y = b;v = c;}
};
node que[300];
int dx[4] = {0,1,0,-1};
int dy[4] = {1,0,-1,0};
int xx,yy;
int m;
char a[15][15] = {'\0'};
int head;
int tail;int main()
{int k;cin>>k;for(int iii = 0;iii<k;iii++){int t;cin>>m>>t;int xxx,yyy;for(int i = 1;i<=m;i++){for(int j = 1;j<=m;j++){cin>>a[i][j];if(a[i][j]=='S'){xxx = i;yyy = j;}else if(a[i][j]=='E'){xx = i;yy = j;}}}que[++tail] = {xxx,yyy,0};bool f = false;while(head<tail){head++;for(int i = 0;i<4;i++){int tx = que[head].x+dx[i];int ty = que[head].y+dy[i];if(tx>=1&&tx<=m&&ty>=1&&ty<=m&&a[tx][ty]!='#'){a[tx][ty] = '#';que[++tail] = {tx,ty,que[head].v+1};if(tx==xx&&ty==yy){if(que[tail].v<=t){f = true;cout<<"YES"<<endl;}break;}}}if(f==true) break;}if(f==false) cout<<"NO"<<endl;}return 0;
}

密室逃脱

题目描述

有一个密室逃脱游戏,有100间密室连在一排。密室编号是从1开始连续排列一直排到第100间密室,如下图:游戏规则:1.玩家初始位置在1号密室; ⒉每次玩家可以进入右边的一个密室,也可以跳过一个密室进入下个密室(如:当玩家当前在3号密室,他可以进入4号密室也可以进入5号密室);3.有毒气的密室不能进入需要避开。 给定三个正整数X,Y,M (1<X<Y<M≤100),表示三个密室编号。X号密室和Y号密室有毒气泄漏,不能进入,玩家需要进入到M号密室 按照 游戏规则进入M号密室有多少种路线方案。例如: X=2,Y=4,M=7,2号和4号有毒气泄露,避开2号和4号毒气密室,进入7号密室有2种路线方案,分别是1->3->5->6->7路线和1->3->5->7路线。

输入格式

输入三个正整数X,Y,M(1<X<Y≤M),并以英文逗号隔开

输出格式

输出从1号密室开始避开X、Y号毒气密室,进入M号密室有多少种路线方案

样例

样例输入
2,4,7

样例输出
2

#include <bits/stdc++.h>
using namespace std;int a[110] = {0};
int cnt = 0;
int m;void aaa(int);int main()
{int x,y;char aaaa,bbbb;cin>>x>>aaaa>>y>>bbbb>>m;a[x] = 1;a[y] = 1;aaa(1);cout<<cnt;return 0;
}
void aaa(int n)
{if(n==m){cnt++;return;}else if(n>m){return;}if(a[n+1]!=1){aaa(n+1);}if(a[n+2]!=1){aaa(n+2);}
}

求逆序对问题

题目描述

给定N个数的序列a1,a2,...aN,定义一个数对(ai, aj)为“重要逆序对”的充要条件为 i < j 且 ai > 2aj。求给定序列中“重要逆序对”的个数。

输入格式

本题有多个测试点,每个测试点分为两行:第一行为序列中数字的个数N(1 ≤ N ≤ 200000),第二行为序列a1, a2 ... aN(0 ≤a ≤ 10000000),由空格分开。N=0表示输入结束。

输出格式

每个测试点一行,输出一个整数,为给序列中“重要逆序对”的个数。

样例

样例输入
10

0 9 8 7 6 5 4 3 2 1

0

样例输出
16

#include <bits/stdc++.h>
using namespace std;int n;
int a[100010];
int cnt;int main()
{cin>>n;while(n!=0){for(int i = 1;i<=n;i++){cin>>a[i];}for(int i = 1;i<=n;i++){for(int j = 1;j<=n;j++){if(i<j&&a[i]>2*a[j]){cnt++;}}}cout<<cnt<<endl;cin>>n;}return 0;
}

Bookshelf B超级书架

题目描述

Farmer John 最近为奶牛们的图书馆添置了一个巨大的书架,尽管它是如此的大,但它还是几乎瞬间就被各种各样的书塞满了。现在,只有书架的顶上还留有一点空间。

所有  头奶牛都有一个确定的身高 。设所有奶牛身高的和为 。书架的高度为 ,并且保证 。

为了够到比最高的那头奶牛还要高的书架顶,奶牛们不得不像演杂技一般,一头站在另一头的背上,叠成一座“奶牛塔”。当然,这个塔的高度,就是塔中所有奶牛的身高之和。为了往书架顶上放东西,所有奶牛的身高和必须不小于书架的高度。

显然,塔中的奶牛数目越多,整座塔就越不稳定,于是奶牛们希望在能够到书架顶的前提下,让塔中奶牛的数目尽量少。 现在,奶牛们找到了你,希望你帮她们计算这个最小的数目。

输入格式

第  行:  个用空格隔开的整数: 和 。

第  行: 第  行是  个整数:。

输出格式

第  行: 输出  个整数,即最少要多少头奶牛叠成塔,才能够到书架顶部

样例

样例输入

复制6 40
6
18
11
13
19
11

样例输出

复制3
样例说明

入说明: 一共有6头奶牛,书架的高度为40,奶牛们的身高在6..19之间。

输出说明: 一种只用3头奶牛就达到高度40的方法:18+11+13。当然还有其他方法,在此不一一列出了。

#include <iostream>
#include <algorithm>
using namespace std;int n,b;
int a[20010];int main()
{cin>>n>>b;for(int i = 0;i<n;i++){cin>>a[i];}sort(a+0,a+n);int sum = 0;int cnt = 0;for(int i = n-1;i>=0;i--){sum += a[i];cnt++;if(sum>=b){cout<<cnt;return 0;}}return 0;
}

抓住那头牛

题目描述

农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点,牛位于点。农夫有两种移动方式:

1、从  移动到  或 ,每次移动花费一分钟

2、从  移动到 ,每次移动花费一分钟

假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?

输入格式

两个整数, 和 。

输出格式

一个整数,农夫抓到牛所要花费的最小分钟数。

样例

样例输入
5 17

样例输出
4

样例解释

路线为: 5 -> 10 -> 9 -> 18 -> 17,共 4 步。

#include <bits/stdc++.h>
using namespace std;
struct point
{int x,v;point(){};point(int a,int b){x = a;v = b;}
};
point que[100010];
int head = 0;
int tail = 0;
int b[100010];
int n,m;
int cnt;
int dx[] = {1,-1,2};
int main()
{cin>>n>>m;b[n] = 1;que[++tail] = {n,0};while(head<tail){head++;bool t = false;for(int i = 0;i<3;i++){int tx;if(i==2){tx = que[head].x*dx[i];}else{tx = que[head].x+dx[i];}if(tx>=1&&tx<=100010&&b[tx]==0){b[tx] = 1;que[++tail] = {tx,que[head].v+1};if(tx==m){t = true;break;}}}if(t==true){break;}}cout<<que[tail].v;return 0;
}

献给阿尔吉侬的花束

题目描述

阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫。今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪。现在研究员们想知道,如果阿尔吉侬足够聪明,它最少需要多少时间就能吃到奶酪。

迷宫用一个R×C的字符矩阵来表示。字符S表示阿尔吉侬所在的位置,字符E表示奶酪所在的位置,字符#表示墙壁,字符.表示可以通行。阿尔吉侬在1个单位时间内可以从当前的位置走到它上下左右四个方向上的任意一个位置,但不能走出地图边界。

输入格式

第一行是一个正整数T(1 ≤ T ≤ 10),表示一共有T组数据。

每一组数据的第一行包含了两个用空格分开的正整数R和C(2 ≤ R, C ≤ 200),表示地图是一个R×C的矩阵。

接下来的R行描述了地图的具体内容,每一行包含了C个字符。字符含义如题目描述中所述。保证有且仅有一个S和E。

输出格式

对于每一组数据,输出阿尔吉侬吃到奶酪的最少单位时间。若阿尔吉侬无法吃到奶酪,则输出“oop!”(只输出引号里面的内容,不输出引号)。每组数据的输出结果占一行。

样例

样例输入

3
3 4
.S..
###.
..E.
3 4
.S..
.E..
....
3 4
.S..
####
..E.

样例输出
5

1

oop!

#include <bits/stdc++.h>
using namespace std;
struct node
{int x,y,v;node(){};node(int a,int b,int c){x = a;y = b;v = c;}
};
node que[10010];
char a[210][210];
int ma;
int n,m;
int sx,sy,ex,ey;
int head,tail;
int dx[] = {0,1,0,-1};
int dy[] = {1,0,-1,0};int main()
{int ttt;cin>>ttt;while(ttt!=0){ttt--;cin>>n>>m;for(int i = 1;i<=n;i++){for(int j = 1;j<=m;j++){cin>>a[i][j];if(a[i][j]=='S') sx = i,sy = j;if(a[i][j]=='E') ex = i,ey = j;}}head = 0;tail = 0;bool t = false;que[++tail] = {sx,sy,0};while(head<tail){head++;for(int i = 0;i<4;i++){int tx = que[head].x+dx[i];int ty = que[head].y+dy[i];if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&a[tx][ty]!='#'){a[tx][ty] = '#';que[++tail] = {tx,ty,que[head].v+1};if(tx==ex&&ty==ey){cout<<que[tail].v<<endl;t = true;break;}}}if(t==true) break;}if(t==false) cout<<"oop!"<<endl;}return 0;
}

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

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

相关文章

总结:如何在SpringBoot中使用https协议以及自签证书?

总结&#xff1a;如何在SpringBoot中使用https协议以及自签证书&#xff1f; 前提一&#xff1a;什么是http协议&#xff1f;前提二&#xff1a;什么是https协议&#xff1f;一生成自签证书二 将证书转换为PKCS12格式三 配置SpringBoot&#xff08;1&#xff09;修改配置文件&a…

Humanoid Robot Price Break 人形机器人价格突破

Humanoid Robot Price Break 人形机器人价格突破 中国机器人制造商宇树科技&#xff08;Unitree&#xff09;和EngineAI在2025年CES展会上展示的人形机器人。这些机器人价格相对较低&#xff0c;功能较为先进&#xff0c;有望将人形机器人技术从实验室或工业场景推向日常生活应…

用大模型学大模型03-数学基础 概率论 最大似然估计(MLE)最大后验估计(MAP)

https://metaso.cn/s/r4kq4Ni 什么是最大似然估计&#xff08;MLE&#xff09;最大后验估计&#xff08;MAP&#xff09;&#xff1f;深度学习中如何应用&#xff0c;举例说明。 好的&#xff0c;我现在需要回答关于最大似然估计&#xff08;MLE&#xff09;和最大后验估计&…

基于 Filebeat 的日志收集

在现代分布式系统中&#xff0c;日志数据作为关键的监控与故障排查依据&#xff0c;越来越受到重视。本文将深入探讨 Filebeat 的技术原理、配置方法及在 ELK&#xff08;Elasticsearch、Logstash、Kibana&#xff09;生态系统中的应用&#xff0c;帮助开发者构建高效、稳定的日…

【新品解读】AI 应用场景全覆盖!解码超高端 VU+ FPGA 开发平台 AXVU13F

「AXVU13F」Virtex UltraScale XCVU13P Jetson Orin NX 继发布 AMD Virtex UltraScale FPGA PCIE3.0 开发平台 AXVU13P 后&#xff0c;ALINX 进一步研究尖端应用市场&#xff0c;面向 AI 场景进行优化设计&#xff0c;推出 AXVU13F。 AXVU13F 和 AXVU13P 采用相同的 AMD Vir…

【去雨去雾小工具】用python实现去雨去雾的小工具

目录 🍓🍓1.效果 🍂🍂2.去雨功能实现 🍇2.1训练模型: 🍇2.2保存模型: 🙋🙋3.去雾功能实现 🐸🐸4.python代码实现可视化界面 🍋4.1完整代码 🍋4.2代码解释 1. 创建主窗口 2. 创建原始图像显示区域 3. 创建去雨后图像显示区域 4. …

使用python脚本提取html网页上的所有文本信息

你可以使用 BeautifulSoup 库来提取 HTML 网页上的所有文本信息。以下是一个示例脚本&#xff1a; 步骤 安装 beautifulsoup4 和 requests&#xff08;如果尚未安装&#xff09;&#xff1a; pip install beautifulsoup4 requestsPython 脚本&#xff1a; import requests fro…

11.推荐系统的安全与隐私保护

接下来我们将学习推荐系统的安全与隐私保护。在推荐系统中&#xff0c;用户的数据是至关重要的资产。保护用户的隐私和数据安全&#xff0c;不仅是法律和道德的要求&#xff0c;也是提升用户信任和满意度的关键因素。在这一课中&#xff0c;我们将介绍以下内容&#xff1a; 推…

k8s优雅操作pod容器组

k8s优雅操作pod容器组 回退备份 kubectl get deploy deployName -o yaml>>deployName-bak-date "%Y-%m-%d".yaml获取副本数 replicasecho | kubectl get -o template deploy/deployName --template{{.spec.replicas}}停止容器组 kubectl scale deployment …

DeepSeek R1打造本地化RAG知识库

本文将详细介绍如何使用Ollama、Deepseek R1大语音模型、Nomic-Embed-Text向量模型和AnythingLLM共同搭建一个本地的私有RAG知识库。 一. 准备工作 什么是RAG&#xff1f; RAG是一种结合了信息检索和大模型&#xff08;LLM&#xff09;的技术&#xff0c;在对抗大模型幻觉、…

Node.js使用教程

Node.js使用教程 Node.js是一个基于Chrome V8引擎的JavaScript运行环境&#xff0c;它让JavaScript运行在服务器端。以下是一个简单的Node.js使用教程&#xff1a; 一、 Node.js开发环境和编译 1.1 安装Node.js 访问Node.js官网下载并安装适合您操作系统的Node.js版本。 1…

MySQL和SQL server的区别

在当今数据驱动的世界里&#xff0c;数据库技术的选择对于企业和个人开发者来说至关重要。MySQL 和 SQL Server 是两个广泛使用的数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;它们各自拥有独特的优势和适用场景。本文将深入探讨这两个数据库系统之间的区别&#xf…

从零开始人工智能Matlab案例-粒子群优化

目标&#xff1a;求解Rastrigin函数最小值&#xff08;多峰测试函数&#xff09; 粒子群优化算法是一种基于群体智能的优化算法&#xff0c;模拟了鸟群或鱼群等群体的行为&#xff0c;通过粒子在搜索空间中的移动来寻找最优解。 % PSO参数 nParticles 30; % 粒子数量 max…

无人机遥感图像拼接及处理教程

无人机遥感图像采集流程&#xff1a; 无人机遥感监测 无人机航线规划设计 无人机飞行软件操作 无人机航拍一般过程 无人机遥感图像拼接软件&#xff1a; Photoscan软件 软件基本操作 遥感图像拼接的一般流程 遥感图像分组拼接与点云分类 无人机遥感图像拼接&#xff1a; 基于无…

LeetCode每日精进:876.链表的中间结点

题目链接&#xff1a;876.链表的中间结点 题目描述&#xff1a; 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[3,4,5…

Vue 发送 PDF 文件链接到 WinForm 程序进行打印

Vue 发送 PDF 文件链接到 WinForm 程序进行打印的完整流程如下&#xff1a; 1. Vue 端 Vue 通过 fetch 或 axios 发送 PDF 文件的 URL 给 WinForms 程序&#xff08;WinForms 需要开启一个本地 API&#xff09;。 <template><div><button click"sendPri…

从零到一:开发并上线一款极简记账本小程序的完整流程

从零到一&#xff1a;开发并上线一款极简记账本小程序的完整流程 目录 前言需求分析与功能设计 2.1 目标用户分析2.2 核心功能设计2.3 技术栈选择 开发环境搭建 3.1 微信开发者工具安装与配置3.2 项目初始化3.3 版本控制与协作工具 前端开发 4.1 页面结构与布局4.2 组件化开发…

对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 , 基于 openEuler 构建 LVS-DR 群集。

对比 LVS 负载均衡群集的 NAT 模式和 DR 模式&#xff0c;比较其各自的优势 NAT模式的优势&#xff1a; 可以隐藏后端服务器的IP地址&#xff0c;提高了系统的安全性。 支持多个后端服务器共享同一个IP地址&#xff0c;提高了系统的可扩展性。 可以在负载均衡器和后端服务…

【操作系统】操作系统结构

内核 什么是内核&#xff1f; 内核作为应用程序连接硬件设备的桥梁&#xff0c;使得应用程序只需关心与内核交互&#xff0c;不用关心硬件细节。 内核有哪些能力呢&#xff1f; 内核是怎么工作的&#xff1f; Linux 的设计 MultiTask SMP ELF ELF 的意思是可执行文件链接格式…

缓存的介绍

相关面试题 &#xff1a; ● 为什么要用缓存&#xff1f; ● 本地缓存应该怎么做&#xff1f; ● 为什么要有分布式缓存?/为什么不直接用本地缓存? ● 为什么要用多级缓存&#xff1f; ● 多级缓存适合哪些业务场景&#xff1f; 缓存思想 空间换时间(索引&#xff0c;集群&a…