试题 D: 迷宫

本题总分:10 分

【问题描述】
下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方。

010000
000100
001001
110000

迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左、右四个方向之一。
对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫, 一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走。
对于下面这个更复杂的迷宫(30 行 50 列),请找出一种通过迷宫的方式,其使用的步数最少,在步数最少的前提下,请找出字典序最小的一个作为答案。请注意在字典序中D<L<R<U。(如果你把以下文字复制到文本文件中,请务 必检查复制的内容是否与文档中的一致。在试题目录下有一个文件 maze.txt, 内容与下面的文本相同)

01010101001011001001010110010110100100001000101010
00001000100000101010010000100000001001100110100101
01111011010010001000001101001011100011000000010000
01000000001010100011010000101000001010101011001011
00011111000000101000010010100010100000101100000000
11001000110101000010101100011010011010101011110111
00011011010101001001001010000001000101001110000000
10100000101000100110101010111110011000010000111010
00111000001010100001100010000001000101001100001001
11000110100001110010001001010101010101010001101000
00010000100100000101001010101110100010101010000101
11100100101001001000010000010101010100100100010100
00000010000000101011001111010001100000101010100011
10101010011100001000011000010110011110110100001000
10101010100001101010100101000010100000111011101001
10000000101100010000101100101101001011100000000100
10101001000000010100100001000100000100011110101001
00101001010101101001010100011010101101110000110101
11001010000100001100000010100101000001000111000010
00001000110000110101101000000100101001001000011101
10100101000101000000001110110010110101101010100001
00101000010000110101010000100010001001000100010101
10100001000110010001000010101001010101011111010010
00000100101000000110010100101001000001000000000010
11010000001001110111001001000011101001011011101000
00000110100010001000100000001000011101000000110011
10101000101000100010001111100010101001010000001000
10000010100101001010110000000100101010001011101000
00111100001000010000000110111000000001000000001011
10000001100111010111010001000110111010101101111000

【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一 个字符串,包含四种字母 D、U、L、R,在提交答案时只填写这个字符串,填写多余的内容将无法得分。


方法一:肉眼暴力+运用Excel画迷宫

https://www.cnblogs.com/yzm10/p/10595165.html 佩服考场上能用肉眼扫描答案还正确的大佬

注意txt替换的时候,TAB键需要先在文本上打一个,然后是复制那个打出来的到替换文本里的

自动调整excel的列宽时,选中要调整的行和列,快捷键Alt+O+C+A

普及:自动调整行高Alt+O+R+A

Excel效果:接下来就拿着笔开始扫吧!

方法二:BFS广搜

思路:见代码注释

public class BFS_迷宫 {static int dir[][] = new int[][] {{1,0},{0,-1},{0,1},{-1,0}};static char direction[] = new char[] {'D','L','R','U'};
//一开始搜索的顺序就要调整为最小字典序,这样for循环,第一个得出来的结果字典序一定最小static int map[][] = new int[30][50];static boolean vis[][] = new boolean[30][50];static class Point{int x,y;int step;//走到当前这个点的步数String way;//走到当前这个点经过的路径public Point(int x,int y){this.x = x;this.y = y;}}static void bfs(Point p)//从P点开始进行广搜{Queue<Point> que = new LinkedList<Point>();que.add(p);p.step = 0;p.way = "";vis[p.x][p.y] = true;//以上操作初始化,把P点放进que队列中while(!que.isEmpty()){Point po = que.peek();if(po.x==29&&po.y==49){System.out.println(po.step);System.out.println(po.way);return;}for(int i=0;i<4;i++)//按照DLRU的方向开始试探{int new_x = po.x+dir[i][0];int new_y = po.y+dir[i][1];Point next_p = new Point(new_x, new_y);//判断即将下脚的这个点是否越界或者访问过或者是障碍物if(new_x>=0&&new_y>=0&&new_x<30&&new_y<50&&!vis[new_x][new_y]&&map[new_x][new_y]!=1){vis[new_x][new_y] = true;next_p.step = po.step+1;//父点步数+1next_p.way = po.way+direction[i];//父点的路径加上本次路径que.add(next_p);}}que.poll();}}public static void main(String[] args) {// TODO Auto-generated method stubScanner in = new Scanner(System.in);//初始化迷宫for(int i=0;i<30;i++){String s = in.nextLine();//读入一行字符串for(int j=0;j<50;j++){map[i][j] = s.charAt(j)-'0';//把每行字符串的每个字符变成数字赋值给map}}bfs(new Point(0,0));}}

答案:(最少一共186步)

DDDDRRURRRRRRDRRRRDDDLDDRDDDDDDDDDDDDRDDRRRURRUURRDDDDRDRRRRRRDRRURRDDDRRRRUURUUUUUUULULLUUUURRRRUULLLUUUULLUUULUURRURRURURRRDDRRRRRDDRRDDLLLDDRRDDRDDLDDDLLDDLLLDLDDDLDDRRRRRRRRRDDDDDDRR

【蓝桥杯 迷宫 2019省赛javaA组】BFS解法该死的Excel竟如此甜美相关推荐

  1. 2020年第十一届蓝桥杯第二场省赛B组C++题解

    2020年第十一届蓝桥杯第二场省赛B组C++题解 题单 第一题 第二题 第三题 第四题 第五题 第六题 第七题 第八题 题单 第一题 小蓝要为一条街的住户制作门牌号. 这条街一共有 2020 位住户, ...

  2. 蓝桥杯2013年国赛A组——网络寻路(DFS和中转边巧解)

    蓝桥杯2013年国赛A组--网络寻路 1.题目描述 2.输入输出 3.样例输入和输出 4.题目分析 1.首先明确,题目中的目的地有两种,一种是回到原点,一种是到达没有到达的地方 2.在路径中经过的点不 ...

  3. 2021年第十二届蓝桥杯软件类省赛python组试题及其解析。

    目录 一.卡片 二.直线 三.货物摆放 四.路径 五.回路计算 六.时间显示 七.杨辉三角 八.左孩子右兄弟 九.异或数列 十.括号序列 一.卡片 本题总分:5分 [问题描述] 小蓝有很多数字卡片,每 ...

  4. 2021年第十二届蓝桥杯软件类省赛python组

    目录 2021年第十二届蓝桥杯软件类省赛python组 1.卡片 常规做法 使用functions.Counter计数 2.直线 3.货物摆放 4.路径 5.回路计算 递归--太慢跑不出来 状态压缩D ...

  5. 使用JavaScript解答2018第九届蓝桥杯C/C++省赛A组试题

    大三时参加过第七届蓝桥杯个人赛及团队赛,转眼已经两年,最近看了看第九届蓝桥杯试题,打算用JavaScript实现一下. 题目1 标题:分数 1/1 + 1/2 + 1/4 + 1/8 + 1/16 + ...

  6. 2019 第十届蓝桥杯C/C++ 省赛B组题解

    文章目录 前言 试题 A: 组队 试题 B: 年号字串 试题 C: 数列求值 试题 D: 数的分解 试题 E: 迷宫 试题 F: 特别数的和 试题 G: 完全二叉树的权值 试题 H: 等差数列 试题 ...

  7. 2019年第十届蓝桥杯 C / C ++省赛 B 组真题题解

    A: 组队 输入数据 编号 号位1 2 3 4 51 97 90 0 0 0 2 92 85 96 0 0 3 0 0 0 0 93 4 0 0 0 80 86 5 89 83 97 0 0 6 82 ...

  8. 2019年第十届蓝桥杯C/C++ 省赛B组真题+题解

     答案和代码仅供参考,比赛时倒数第二题花了太多时间,导致没时间写填空题最后一题和大题最后一题,唉,总的来说今年的题目比去年的简单,今年的蓝桥杯可真是"暴力杯".先放这么多东西吧,以 ...

  9. 第十届蓝桥杯【C++省赛B组】简单易懂试题解析

    第一题 标题:组队(本题总分:5 分) 作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容. 每位球员担任 1 号位至 5 号位时的评分如下表所示.请你计算首 ...

最新文章

  1. 关于企业的信息化建设
  2. 人工智能带来科技浪潮的同时,对相关法治领域提出了什么样的挑战?
  3. Refresh your Java skills–面对Java学习过程中的一些迷茫
  4. java json 修改字段_JSON文件-Java:编辑/更新字段值
  5. Sharepoint学习笔记 –架构系列—10 Sharepoint的服务器端对象模型(Server Object Model) 2.内容层次结构
  6. FreeSql (三十三)CodeFirst 类型映射
  7. 清华大学《操作系统》(十八):管程于信号量
  8. 第九篇:Spring Boot整合Spring Data JPA_入门试炼05
  9. 大屏数据可视化综合设计
  10. ae2020英文改中文_AE2020 菜单中英文翻译对照表(小白必备AE菜单字典)
  11. 2020.11.18 比赛总结题解合集
  12. 【oracle】varchar和varchar2区别
  13. 【深度相机系列二】深度相机原理揭秘--飞行时间(TOF)
  14. Python matplotlib绘制函数曲线
  15. 微信公众号网页授权登录多域名的解决
  16. 特征根是复数的二阶微分方程
  17. xp系统dns服务器异常请稍后再试,xp系统网页“无法解析服务器的dns地址”的详细办法...
  18. java构造方法是什么_java中什么叫构造方法,作用是什么?
  19. Ctrl c 复制html,一键复制粘贴(用热键代替Ctrl+X、Ctrl+C、Ctrl+V)
  20. Tensorflow.js||使用 CNN 识别手写数字

热门文章

  1. linux黑洞设备的路径,linux dev 常见特殊设备介绍与应用(loop,null,zero,full,random)
  2. UE4 C++(20) UnrealPak打包和打补丁
  3. 用canvas画时钟(一步步详解附带源代码)
  4. 小米怎么更新鸿蒙,华为鸿蒙、小米 MIUI 系统最新更新信息
  5. JavaScript面向对象编程BOM对象
  6. 天天英语之04——11_11
  7. 登陆云边端,AI芯片产业打响全线战争
  8. java对前台传入的日期字符串的处理-2021
  9. StringBuilder的四种清空方式及其效率比较
  10. springboot+quartz构建定时任务