P1135 奇怪的电梯

一、题目

在这里插入图片描述

二、解题思路

  1. 看到该题,我第一反应是使用动态规划进行求解,但是在分析题目的时候发现,该电梯不同于生活中的电梯:想去几层就去几层,而是去的地方是固定的。那么很容易想到,整个电梯的运行情况实际上可以看做是一张图,因此,该题的求解应该与图有关,而不是动态规划。
  2. 题目要求计算A楼到B楼最少要按几次按钮(实际上是需要中转几次。不考虑按开和关按钮)。当构建好图时,该问题可以转化为B的几阶邻居是A,很容易想到使用层次遍历法进行问题的求解。
  3. 有两处细节需要注意:(1) 在构建图时,我们构建的是有向图,而非无向图。因为A可以到达B时,不代表B可以到达A,比如题目中1可以到达5,但是5无法到达1。(2)当A==B时,最少按键次数为0。

三、代码

#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
int N, A, B;

//进行层次遍历,根节点为B
int bfs(vector
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值