1.6.2 奇怪的电梯(BFS)
Description
有一天uncle-lu做了一个梦,梦见了一种很奇怪的电梯。
大楼的每一层楼都可以停电梯,而且i层楼上有一个数字。电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。
当然,如果不能满足要求,相应的按钮就会失灵。例如:3,3,1,2,5代表了,从1楼开始。在1楼,按“上”可以到4楼,按“下”是不起作用的,因为没有−2楼。
那么,从A楼到B楼至少要按几次按钮呢?
Input
第一行为333个用空格隔开的正整数,表示N,A,B
第二行为N个用空格隔开的非负整数,表示Ki。
Output
一行,即最少按键次数,若无法到达,则输出−1-1−1。
Sample Input 1
5 1 5 3 3 1 2 5
Sample Output 1
3
Hint
1≤N≤200,1≤A,B≤N
#include <cstring>
#include <iostream>
#include <algorithm>
#include <queue>using namespace std;
int h[210];
typedef pair<int, int> PII;const int N = 2000000;int n,a,b;
int d[N];inline int bfs()
{queue<int> q;memset(d, -1, sizeof d);d[a] = 0;q.push(a);while (q.size()){auto t = q.front();//cout<<t<<endl;q.pop();for (int i = 0; i <= 1; i ++ ){int y;if(i) y=t+h[t];else y=t-h[t];if (y<=0||y>b)continue;if (d[y] == -1){d[y] = d[t] + 1;q.push(y);}}}return d[b];
}int main()
{cin >> n >> a >> b;for (int i = 1; i <= n; i ++ )scanf("%d", &h[i]);cout << bfs() << endl;return 0;
}
#include<cstdio>
int n,st,ed,p=0;
int step[210],lift[210];
bool pd=true;
int main()
{scanf("%d %d %d",&n,&st,&ed);for(int i=1;i<=n;i++){step[i]=-1;scanf("%d",&lift[i]);}step[st]=0;while(step[ed]==-1 && pd){pd=false;for(int i=1;i<=n;i++)if(step[i]==p){int j=i+lift[i];if(j<=n && step[j]==-1){step[j]=p+1;pd=true;}j=i-lift[i];if(j>0 && step[j]==-1){step[j]=p+1;pd=true;}}p++;}printf("%d",step[ed]);return 0;
}
两种方法都可以
1.6.2 奇怪的电梯(BFS)相关推荐
- P1135 奇怪的电梯(BFS/DFS)
来源:https://www.luogu.org/problemnew/show/P1135 题目描述 有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第i层楼(1≤i≤N ...
- bfs总结 bfs题单 最短路 python (奇怪的电梯 好奇怪的游戏 迷宫 马的遍历 [USACO08FEB]Meteor Shower S)
1 可以用来遍历所有的点 2 可以用来找最短路 3 多源最短路,开始时一次向队列放之多个点#板子 """ def bfs():1 起始点入队标记入队的点while not ...
- 广度优先搜索——奇怪的电梯(洛谷 P1135)
广度优先搜索普及/提高篇,今天讲述的是洛谷里的一道题 奇怪的电梯(洛谷 P1135) 说一下我解题时候的思路吧. 首先读清楚题目,题目要求输出从 a楼 到 b楼的最少次数,楼层必须在[1,n]之间升降 ...
- 洛谷P1135:奇怪的电梯(lift)
题目 奇怪的电梯 - 洛谷 思路讲解 这道题主要用的是BFS(广度优先搜索),对电梯路径进行广搜,最后得出答案 广搜,全称广度优先搜索,相较dfs来讲,它更像是一个涟漪. 啥意思嘞?画一个图你就懂了 ...
- 洛谷 P1135 奇怪的电梯
P1135 奇怪的电梯 代码实现 #include <iostream> #include <cstring> #include <queue> using nam ...
- P1135 奇怪的电梯
题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第 i 层楼(1≤i≤N)上有一个数字 Ki(0≤Ki≤N).电梯只有四个按钮:开,关,上,下.上下的层 ...
- 搜索2(一、马的遍历 二、 求细胞数量 三、01迷宫 四、奇怪的电梯 五、海战 六、路障)
搜索2 一.马的遍历 二. 求细胞数量 三.01迷宫 四.奇怪的电梯 五.海战 六.路障 一.马的遍历 题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算 ...
- 1360:奇怪的电梯(lift) 《信息学奥赛一本通》
http://ybt.ssoier.cn:8088/problem_show.php?pid=1360 /* 1360:奇怪的电梯(lift)--AC http://ybt.ssoier.cn:808 ...
- 奇怪的电梯(洛谷-P1135)
题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第 i 层楼 (1≤i≤N) 上有一个数字 Ki(0≤Ki≤N) .电梯只有四个按钮:开,关,上,下.上 ...
最新文章
- IDentif.AI | 开发AI平台以快速确定包括COVID-19在内感染的治疗方案
- 零基础入门学习Python(21)-递归1
- 【MySQL高级】查询缓存、合并表、分区表
- dynamo方程怎么写_根据以下说明,画出因果关系图,建立流图模型,并拟定变量名称和适当数据,写出对应的...
- 内网穿透从搭建到溯源
- matlab降低视频帧数,如何更改视频的帧速率
- Confusion matrix
- 【竞赛】智能算法赛:智慧海洋建设Top1方案代码
- Java客户端操作elasticsearch--向索引库添加mappings映射数据
- DocumentNavigator是什么东东?
- opencv机器学习线性回归_Python机器学习之?线性回归入门(二)
- 吉他效果器-削波失真
- 铺瓷砖问题的C++实现
- SpringBoot 多语言切换
- echart.js给series,xAxis中的data动态赋值(三种方式)
- html自动增加文本框,html创建文本框
- 删除后别人的微信号变成wxid_“重新做人”?安卓版微信支持修改微信号,网友:哭了...
- 遇到问题---thrift--python---ImportError: No module named thrift
- Android深度探索与驱动开发(五)
- 流利说英语level4_流利说 懂你英语 level4 unit1 part1