/*试题 E: 迷宫    本题总分:15 分
【问题描述】
下图给出了一个迷宫的平面图,其中标记为 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
试题E: 迷宫 7
第十届蓝桥杯大赛软件类省赛 Java 大学 B 组
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,在提交答案时只填写这个字符串,填
写多余的内容将无法得分。*/

 解题思路:

 1、广度优先搜索:遍历从起点到终点 每一个点到重点的最短距离 逆向搜索

 2、深度优先搜索:根据广度优先搜索的预处理,深度搜索一条最短的路径

答案正确

import java.util.*;
public class E5{static int n,m;static char[][] maze;static int[][] dis;static int[][] dir = {{1 ,0},{0,-1 },{0,1 },{-1 ,0}};static char[] c = {'D','L','R','U'};public static void main(String[] args) {Scanner scanner = new Scanner(System.in);Queue<Integer> queue = new LinkedList<Integer>();dis = new int[30][50];maze = new char[30][50];n = scanner.nextInt();m = scanner.nextInt();for(int i=0;i<n;i++) {String string = scanner.next();for(int j=0;j<m;j++)maze[i][j] = string.charAt(j);}queue.add((n-1 )*m+m-1 );while(!queue.isEmpty()) {int  temp = queue.poll();for(int i=0;i<4;i++) {int xx = temp/m + dir[i][0];int yy = temp%m + dir[i][1 ];if(xx<0||xx>=n||yy<0|yy>=m||maze[xx][yy]=='1'||dis[xx][yy]!=0) continue;   //注意这里dis[n-1 ][m-1 ]=0,但是已经遍历过了System.out.println(xx+" "+yy);queue.add(xx*m+yy);dis[xx][yy] = dis[temp/m][temp%m] + 1 ;if(xx==0&&yy==0) break;}}dis[n-1 ][m-1 ] = 0;  //由于遍历不止一遍,所以值不是0,要在定义一遍
    String record="";int x = 0,y = 0;while(x!=n-1 ||y!=m-1 ) {for(int i=0;i<4;i++) {int xx = x + dir[i][0];int yy = y + dir[i][1 ];if(xx<0||xx>=n||yy<0|yy>=m||maze[xx][yy]=='1') continue;if(dis[x][y]==dis[xx][yy]+1 ) {x = xx; y = yy;record += c[i];break;}}}System.out.println(record.length());System.out.println(record);}
}//DDDDRRURRRRRRDRRRRDDDLDDRDDDDDDDDDDDDRDDRRRURRUURRDDDDRDRRRRRRDRRURRDDDRRRRUURUUUUUUUL//ULLUUUURRRRUULLLUUUULLUUULUURRURRURURRRDDRRRRRDDRRDDLLLDDRRDDRDDLDDDLLDDLLLDLDDDLDDRRRRRRRRRDDDDDDRR

最短路径-->BFS

 记录路径--> 结构体中String存储路径 

答案错误

import java.util.*;public class Main{static class node{int x;int y;String path;public node(int x,int y,String path) {this.x = x;this.y = y;this.path = path;}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);Queue<node> queue = new LinkedList<node>();int[][] dir = {{0 ,1 },{0 ,-1 },{-1 ,0 },{1 ,0 }};char[] c = {'R','L','U','D'};int[][] maze = new int[30 ][50 ];int n = scanner.nextInt();int m = scanner.nextInt();for(int i=0 ;i<n;i++)for(int j=0 ;j<m;j++)maze[i][j] = scanner.nextInt();maze[0 ][0 ] = 1 ;queue.add(new node(0 , 0 , ""));while(!queue.isEmpty()) {node temp = queue.poll();for(int i=0 ;i<4;i++) {int xx = temp.x + dir[i][0 ];int yy = temp.y + dir[i][1 ];if(xx<0 ||xx>=n||yy<0 ||yy>=m||maze[xx][yy]==1 ) continue;maze[xx][yy] = 1 ;queue.add(new node(xx, yy, temp.path+c[i]));if(xx==n-1 &&yy==m-1 )  System.out.println(temp.path+c[i]);}}}
}

转载于:https://www.cnblogs.com/Lemon1234/p/10598202.html

蓝桥杯 第十届 JAVAB组 E迷宫相关推荐

  1. 蓝桥杯历年省赛JAVA-B组真题汇总及题目详解

    蓝桥杯 历年省赛JAVA-B组真题汇总及题目详解 题目大致介绍: 第一题到第三题以及第六题是结果填空,方法不限得到最后结果就行. 第四题和第五题是代码填空题,主要考察算法基本功和编程基本功. 第八题到 ...

  2. 蓝桥杯第十届真题B组(2019年)

    2019年第十届蓝桥杯大赛软件类省赛C/C++大学B组# 试题 A:组队# 本题总分:5分 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1号位至 5号位各一名球员, 组成球队的首发阵容. 每 ...

  3. 蓝桥杯第十届省赛java组解析(灵能传输 四星难度,后缀表达式 两星难度)

    第一题太简单懒得复制题目了 答案是:490 第二题: 试题 B: 不同子串 本题总分:5 分 [问题描述] 一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串.例如,字符串aa ...

  4. 蓝桥杯 笔记整理【JavaB组省赛真题、约数、全排列模板、排列组合、等差等比求和公式、eclipse快捷键、集合、快速求a^n、进制转换(Integer、BigInteger)、动态数组Vector】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  5. 蓝桥杯第十届c语言试题答案,蓝桥杯试题答案(C语言)蓝桥杯试题答案(C语言).pdf...

    蓝桥杯试题答案(C语言)蓝桥杯试题答案(C语言) 1.亲密数:假设有a.b两个数,若a的所有因子之和等于b,b的所有因子之和等于a,并 且a不等于b,则称a和b是一对亲密数.如284和220就是一对亲 ...

  6. Java B组蓝桥杯第十届国赛:大胖子走迷宫

    试题 H: 大胖子走迷宫 时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分 [问题描述] 小明是个大胖子,或者说是个大大胖子,如果说正常人占用 1 × 1 的面积, 小明要占用 5 ...

  7. 蓝桥杯第十届国赛C++研究生组 试题 A: 三升序列

    试题 A: 三升序列 [问题描述] 对于一个字母矩阵,我们称矩阵中的一个三升序列是指在矩阵中找到三个 字母,它们在同一行,同一列,或者在同一 45 度的斜线上,这三个字母从左向 右看.或者从上向下看是 ...

  8. Java B组蓝桥杯第十届国赛:最优旅行

    试题 D: 最优旅行 本题总分:10 分 [问题描述] 中国的高铁四通八达,乘坐方便,小明经常乘坐高铁在城市间旅游. 现在,小明又有了一个长假,他打算继续乘坐高铁旅游.这次,他打算到 下面的城市旅游. ...

  9. 2022.5.29 蓝桥杯第十三届中级组全国总决赛真题

    时间限制: 1000MS 内存限制: 65536KB 题目描述: 编程实现:电线上的小鸟 题目描述: 在一根电线上落有N只小鸟,有的小鸟头向左看,有的小鸟头向右看,且每只小鸟只能看到它视线前的那一只小 ...

最新文章

  1. 安装VMWare tools,以及解决安装后/mnt中有hgfs但没共享文件的方法
  2. 英特尔全栈解决方案,助推人工智能在多领域的落地发展
  3. 转:小结datatable的使用
  4. Mac启动时:boot task failed:fsck-safe处理办法
  5. 文件系统写入100G文件需要多久
  6. 数组中两个数的最大异或值 两数异或值一定小于两数相加和
  7. 好的微服务架构=企业服务总线(ESB)的灭亡?
  8. BZOJ.1007.[HNOI2008]水平可见直线(凸壳 单调栈)
  9. 数据结构--二叉树 Binary Tree
  10. No resource found that matches the given name 'Theme.AppCompat.Light'.
  11. SAP License:为什么新一代的财务产品不能从传统erp企业里长出来?
  12. Vue学习笔记之02-Mustache语法以及一些指令
  13. 《Thumbs up? Sentiment Classification using Machine Learning Techniques》笔记
  14. MemCache可视化客户端管理及监控工具TreeNMS
  15. 简单的C语言代码实现快速排序
  16. 【光通信】布线时,什么情况用单模光纤,什么情况用多模光纤
  17. 浏览器份额及其历史以及内核变迁总结
  18. stata学习笔记|基本知识
  19. RobotFramework(RF)常用函数库-内置库篇
  20. OLED的中英文和图片显示

热门文章

  1. Elastic Search学习笔记5——基本操作
  2. 前端实例练习 - 进度条
  3. Dictionary帮助类
  4. 017 矩阵中的路径
  5. Typescript 和 Javascript之间的区别
  6. bzoj 4443 [Scoi2015]小凸玩矩阵 网络流,二分
  7. 机器不学习:CNN 入门讲解1-什么是卷积
  8. Django进阶Model篇—数据库操作(ORM)
  9. 结对-贪吃蛇-测试过程
  10. button-xml 中android:clickable=false 属性