``
思路分析:
该题考查 广度优先搜索
从a楼层到b楼层需要多少次。
首先利用一个e数组来保存每层楼能够上下走的楼层数。
设置一个v数组来保存是否已经走过某一层楼,防止重复。
每层楼有两种走法,上下层数都一样,所以类似一个二叉树,每个父节点是每个楼层,每个子结点为满足条件的上下两种情况。
通过设置两个队列 q1,q2。
队列 q1 保存每层楼和子结点入队
队列 q2 保存行走的步数
如果q1队列部位空进入循环,如果判断到q1队列 队首元素的值等于要找的值输出q2队首元素 就是行走的步数,并退出函数
否则向q1的队首元素上下行走
t=q1.peek()-e[q1.peek()];//向下走
t=e[q1.peek()]+q1.peek();//向上走
判断t是否超过楼层,或者该楼层已经走过
如果没有则需要将该楼层压进队列,q2中压进q2.peek()+1;
如果最后跳出循环,则说明没找到,需要输出-1,退出函数


import java.util.*;
public class Main {static int n,a,b;static boolean []v=new boolean[210];static int []e=new int[210];public static void main(String[] args) {Scanner sc=new Scanner(System.in);n=sc.nextInt();a=sc.nextInt();b=sc.nextInt();for(int i=1;i<=n;i++){e[i]=sc.nextInt();}bfs();}public static void bfs(){Queue<Integer> q1=new LinkedList();//记录楼层Queue<Integer> q2 =new LinkedList();//记录几次q1.offer(a);q2.offer(0);v[a]=true;while(!q1.isEmpty()){if(q1.peek()==b){System.out.println(q2.peek());return ;}int t=e[q1.peek()]+q1.peek();//访问楼层//电梯向上if(t<=b&&!v[t]){q1.offer(t);q2.offer(q2.peek()+1);v[t]=true;}t=q1.peek()-e[q1.peek()];if(t>=1&&!v[t]){q1.offer(t);q2.offer(q2.peek()+1);v[t]=true;}q1.poll();q2.poll();}System.out.println(-1);return;}
}

P1135 奇怪的电梯(BFS)相关推荐

  1. 洛谷 P1135 奇怪的电梯

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

  2. P1135 奇怪的电梯题解

    P1135 奇怪的电梯题解 题目 链接 字面描述 代码实现 题目 链接 https://www.luogu.com.cn/problem/P1135 字面描述 题目描述 呵呵,有一天我做了一个梦,梦见 ...

  3. 洛谷 P1135奇怪的电梯

    洛谷 P1135奇怪的电梯 代码 import java.io.*; import java.math.BigInteger; import java.util.*;public class Main ...

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

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

  5. P1135 奇怪的电梯

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

  6. 1.6.2 奇怪的电梯(BFS)

    Description 有一天uncle-lu做了一个梦,梦见了一种很奇怪的电梯. 大楼的每一层楼都可以停电梯,而且i层楼上有一个数字.电梯只有四个按钮:开,关,上,下.上下的层数等于当前楼层上的那个 ...

  7. 洛谷P1135 奇怪的电梯 C++ 思路代码

    细心的兄弟们可能会发现啊,我今天的标题改了,这要是为了装逼

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

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

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

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

最新文章

  1. java oracle.sql.struct转字符串_把Oracle查询结果的一列转换为一字符串
  2. 锁定弹出层(jquery语法)
  3. php语言的四种循环控制语句,PHP 控制语句之循环用法示例
  4. 竟然被尤雨溪点赞了:我给Vue生态贡献代码的这一年
  5. sql server 模糊查询
  6. 那些没有兴趣花必要的C++时间
  7. DataGrid中加入CheckBox,并实现单选 选择自 listhome 的 Blog
  8. html中只能上传文件word,HTML文件表单,接受Word文档(HTML file form, accept Word documents)...
  9. Nginx源码阅读笔记-内存池的设计
  10. office图标修复工具_买电脑送Office,可你知道怎样才算用上吗?
  11. Win10系统字体太小的调整设置教程
  12. matlab多目标遗传算法工具箱,运用MATLAB遗传算法工具箱求解非线性多目标优化问题,...
  13. DFS判断回路及回路个数
  14. una到底啥意思_una到底啥意思_Una_英文名Una是什么意思
  15. AD——PCB布线实用技巧
  16. Linux之必备软件安装(搜狗输入法、qq等)
  17. 英语语法长难句——简单句
  18. Centos6.2下fetion的安装
  19. 操作无法完成:- 创建/更新: 未设置强制字段.- 删除: 另一个模型要求删除记录。如果可能的话,把它存档模型: 库龄分析报表 (eno.md.payable.age.analyse.rpt)
  20. 用STM32定时器中断产生PWM控制步进电机

热门文章

  1. 集成测试的“面子”和“里子”
  2. Kafka topic增加partitions
  3. A Typical Homework (a.k.a Shi Xiong Bang Bang Mang) UVA - 12412
  4. 华为携手6家鸿蒙生态合作伙伴共同探讨未来科技蓝图
  5. Maven——maven中的 pom和import的作用到底是什么
  6. 【树莓派 有趣实践】寻找小项目
  7. 单独关闭腾讯会议或者钉钉的声音
  8. 【数据结构应用】航空客运订票系统
  9. error uploading crisocket: timed out waiting for the conditionswapoff -a # will turn off the swap
  10. antdvue upload组件的customRequest自定义上传事件一直uploading处理方法