洛谷题目:P1135 奇怪的电梯 题解

devtools/2025/1/18 19:26:41/

前言:

这道题的难度属于中等难度,做起来其实很简单的,只要掌握DFS、BFS这道题只用不超过20分钟就可以做完这道题。

#解题步骤:

        另:这道题可以通过广度优先搜索(BFS)来解决。BFS是一种适合解决最短路径问题的算法

##BFS算法步骤:

1、初始化:

        创建一个队列 q ,用于存储待处理的节点(楼层)。

        创建一个数组 d ,用于记录从起始楼层 A 到每个楼层的最短距离。初始时,所有距离把它

        设为-1,表示莫访问。

        把起始楼层 A 加入队列,并将 dist[A] 设为0。

2、BFS遍历:

        从队列中驱虎一个节点(当前楼层)。

        计算从当前楼层可到达的上下楼层。

        如果把这些楼层在范围内(1~N)且未访问过( dist 为-1),则将这些楼层假如队列,并且

        更新它们的 dist 值当前楼层的 dist 值+1。

3、结束当前条件:

        如果队列为空,表所有可到达楼层都处理完了。

        如果目标楼层 B 访问过 ( dist[B]  不为-1),则dist[B] 从A道B的最短路径长度。

        如果目标楼层 B 莫被访问 (dist[B] 仍然为-1),表示无法从A到B,最终输出-1。

###代码

#include <bits/stdc++.h>
using namespace std;
int N, A, B;
int main() {cin >> N >> A >> B;vector<int> K(N + 1);for (int i = 1; i <= N; ++i) {cin >> K[i];}vector<int> d(N + 1, -1);  // 记录从起始楼层到每个楼层的最短距离queue<int> q;q.push(A);d[A] = 0;while (!q.empty()) {int c = q.front();q.pop();// 计算上下楼层int up = c + K[c];int dn = c - K[c];// 检查上层是否在范围内且未被访问过if (up <= N && d[up] == -1) {q.push(up);d[up] = d[c] + 1;}// 检查下层是否在范围内且未被访问过if (dn >= 1 && d[dn] == -1) {q.push(dn);d[dn] = d[c] + 1;}}// 输出结果cout << d[B] << endl;return 0;
}

        


http://www.ppmy.cn/devtools/151636.html

相关文章

WORD转PDF脚本文件

1、在桌面新建一个文本文件&#xff0c;把下列代码复制到文本文件中。 On Error Resume Next Const wdExportFormatPDF 17 Set oWord WScript.CreateObject("Word.Application") Set fso WScript.CreateObject("Scripting.Filesystemobject") Set fdsf…

实力认证 | 海云安入选《信创安全产品及服务购买决策参考》

近日&#xff0c;国内知名安全调研机构GoUpSec发布了2024年中国网络安全行业《信创安全产品及服务购买决策参考》&#xff0c;报告从产品特点、产品优势、成功案例、安全策略等维度对各厂商信创安全产品及服务进行调研了解。 海云安凭借AI大模型技术在信创安全领域中的创新应用…

三维重建(十)——论文部分的每章要点

文章目录 一、标题二、写作基础三、预告图像(teaser)四、摘要五、引言(Introduction)六、先前工作(Previous work)七、插图八、结论九、视频十、方法10.1 小描述10.2 方法各个的基础模块10.3 训练策略10.4 Loss十一、实验11.1 实验细节11.1.1 数据集11.1.2 指标11.2 评价…

apache-skywalking-apm-10.1.0使用

apache-skywalking-apm-10.1.0使用 本文主要介绍如何使用apache-skywalking-apm-10.1.0&#xff0c;同时配合elasticsearch-8.17.0-windows-x86_64来作为存储 es持久化数据使用。 步骤如下&#xff1a; 一、下载elasticsearch-8.17.0-windows-x86_64 1、下载ES(elasticsear…

SQL函数和约束

函数 字符串函数 函数功能CONCAT(S1, S2, …, Sn)字符串拼接&#xff0c;将 S1, S2, … Sn 拼接成一个字符串LOWER(str)将字符串 str 全部转换为小写UPPER(str)将字符串 str 全部转换为大写LPAD(str, n, pad)左填充&#xff0c;用字符串 pad 填充 str 的左边直到指定长度RPAD…

【Linux网络编程】高效I/O--I/O的五种类型

目录 I/O的概念 网络通信的本质 I/O的本质 高效I/O 五种I/O模型 阻塞I/O 非阻塞I/O 信号驱动I/O 多路转接/多路复用I/O 异步I/O 非阻塞I/O的实现 I/O的概念 网络通信的本质 网络通信的本质其实就是I/O I&#xff1a;表示input(输入)O&#xff1a;表示ou…

Harmony面试模版

1. 自我介绍 看表达能力、沟通能力 面试记录&#xff1a; 2. 进一步挖掘 2.1. 现状 目前是在职还是离职&#xff0c;如果离职&#xff0c;从上一家公司离职的原因 2.2. 项目经验 如果自我介绍工作项目经验讲的不够清楚&#xff0c;可以根据简历上的信息再进一步了解 面试记…

rhel7.9利用有网络环境打包ansible

RHEL7.9激活(可省略) # 注册 subscription-manager register --usernameyour_username --passwordyour_password --auto-attach # 查看订阅状态 subscription-manager list # 将 “enabled1” 改为 “enabled0” vi /etc/yum/pluginconf.d/subscription-manager.conf 配置阿…