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)相关推荐

  1. P1135 奇怪的电梯(BFS/DFS)

    来源:https://www.luogu.org/problemnew/show/P1135 题目描述 有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第i层楼(1≤i≤N ...

  2. bfs总结 bfs题单 最短路 python (奇怪的电梯 好奇怪的游戏 迷宫 马的遍历 [USACO08FEB]Meteor Shower S)

    1 可以用来遍历所有的点 2 可以用来找最短路 3 多源最短路,开始时一次向队列放之多个点#板子 """ def bfs():1 起始点入队标记入队的点while not ...

  3. 广度优先搜索——奇怪的电梯(洛谷 P1135)

    广度优先搜索普及/提高篇,今天讲述的是洛谷里的一道题 奇怪的电梯(洛谷 P1135) 说一下我解题时候的思路吧. 首先读清楚题目,题目要求输出从 a楼 到 b楼的最少次数,楼层必须在[1,n]之间升降 ...

  4. 洛谷P1135:奇怪的电梯(lift)

    题目 奇怪的电梯 - 洛谷 思路讲解 这道题主要用的是BFS(广度优先搜索),对电梯路径进行广搜,最后得出答案 广搜,全称广度优先搜索,相较dfs来讲,它更像是一个涟漪. 啥意思嘞?画一个图你就懂了 ...

  5. 洛谷 P1135 奇怪的电梯

    P1135 奇怪的电梯 代码实现 #include <iostream> #include <cstring> #include <queue> using nam ...

  6. P1135 奇怪的电梯

    题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第 i 层楼(1≤i≤N)上有一个数字 Ki​(0≤Ki​≤N).电梯只有四个按钮:开,关,上,下.上下的层 ...

  7. 搜索2(一、马的遍历 二、 求细胞数量 三、01迷宫 四、奇怪的电梯 五、海战 六、路障)

    搜索2 一.马的遍历 二. 求细胞数量 三.01迷宫 四.奇怪的电梯 五.海战 六.路障 一.马的遍历 题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算 ...

  8. 1360:奇怪的电梯(lift) 《信息学奥赛一本通》

    http://ybt.ssoier.cn:8088/problem_show.php?pid=1360 /* 1360:奇怪的电梯(lift)--AC http://ybt.ssoier.cn:808 ...

  9. 奇怪的电梯(洛谷-P1135)

    题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第 i 层楼 (1≤i≤N) 上有一个数字 Ki​(0≤Ki​≤N) .电梯只有四个按钮:开,关,上,下.上 ...

最新文章

  1. IDentif.AI | 开发AI平台以快速确定包括COVID-19在内感染的治疗方案
  2. 零基础入门学习Python(21)-递归1
  3. 【MySQL高级】查询缓存、合并表、分区表
  4. dynamo方程怎么写_根据以下说明,画出因果关系图,建立流图模型,并拟定变量名称和适当数据,写出对应的...
  5. 内网穿透从搭建到溯源
  6. matlab降低视频帧数,如何更改视频的帧速率
  7. Confusion matrix
  8. 【竞赛】智能算法赛:智慧海洋建设Top1方案代码
  9. Java客户端操作elasticsearch--向索引库添加mappings映射数据
  10. DocumentNavigator是什么东东?
  11. opencv机器学习线性回归_Python机器学习之?线性回归入门(二)
  12. 吉他效果器-削波失真
  13. 铺瓷砖问题的C++实现
  14. SpringBoot 多语言切换
  15. echart.js给series,xAxis中的data动态赋值(三种方式)
  16. html自动增加文本框,html创建文本框
  17. 删除后别人的微信号变成wxid_“重新做人”?安卓版微信支持修改微信号,网友:哭了...
  18. 遇到问题---thrift--python---ImportError: No module named thrift
  19. Android深度探索与驱动开发(五)
  20. 流利说英语level4_流利说 懂你英语 level4 unit1 part1

热门文章

  1. 2021ICPC澳门站部分题解
  2. 微软TTS,Neospeech TTS 简单使用
  3. 那一年我们都还高三~~~
  4. maya包裹表情变形_Maya融合变形Blend Shape 表情动画
  5. 爱你所爱,行你所行,听从你心,无问西东
  6. Vue + JAVA 实现Excel的模板文件下载
  7. 计算机主机箱,计算机主机箱的制作方法
  8. 浅析C语言文件操作 fopen fclose
  9. 微信隐藏功能系列:微信朋友圈怎么关闭?
  10. 在excel表格中统计及格人数的详细教程步骤