原创

题目大意:人质被困在迷宫之中,要求你寻找一条最短路径快速找到人质。

如图,人质在黄色点2处,营救者在起点红色处,1表示无法通过的障碍点,寻找一条最短路径快速找到人质。

毫无疑问用DFS,遍历4个方向,比较每条可以找到人质的路径即可得到答案。

 1 import java.util.Scanner;
 2
 3 public class Maze_rescue {
 4
 5     static int n;    //行
 6     static int m;    //列
 7     static int min=99999;
 8     static int maze[][];
 9     static int flag[][];    //1代表已走过
10     static int dir[][]= {{0,1},{1,0},{0,-1},{-1,0}};    //右、下、左、上
11
12     static void dfs(int x,int y,int step) {    //step代表步数
13         if(maze[x][y]==2) {    //找到人质
14             if(step<min) {
15                 min=step;
16             }
17             return;
18         }
19         for(int i=0;i<4;i++) {
20             int dx=x+dir[i][0];
21             int dy=y+dir[i][1];
22             if(dx<0 || dy<0 || dx>=n || dy>=m) {    //越界
23                 continue;
24             }
25             if(maze[dx][dy]==1 || flag[dx][dy]==1) {    //判断是否障碍点或已走过点
26                 continue;
27             }
28             flag[dx][dy]=1;    //标志此点已经走过
29             dfs(dx,dy,step+1);
30             flag[dx][dy]=0;    //回溯
31         }
32     }
33
34     public static void main(String[] args) {
35
36         Scanner reader=new Scanner(System.in);
37         n=reader.nextInt();
38         m=reader.nextInt();
39         maze=new int[n][m];    //编号从(0,0)开始
40         flag=new int[n][m];    //标记路径的数组
41         flag[0][0]=1;    //起点不算入步数
42         for(int i=0;i<n;i++) {    //建造迷宫,0表示空地,1表示障碍,2代表人质点
43             for(int j=0;j<m;j++) {
44                 maze[i][j]=reader.nextInt();
45             }
46         }
47         dfs(0,0,0);
48         System.out.println(min);
49     }
50
51 }

View Code

12:11:00

2018-07-15

转载于:https://www.cnblogs.com/chiweiming/p/9313164.html

迷宫救人——DFS小题相关推荐

  1. poj1564 Sum It Up dfs水题

    题目描述: Description Given a specified total t and a list of n integers, find all distinct sums using n ...

  2. 44行代码AC_卡片换位(DFS变形题 视频讲解 )

    励志用尽量少的代码做高效表达 问题描述 你玩过华容道的游戏吗? 这是个类似的,但更简单的游戏. 看下面 3 x 2 的格子 在其中放5张牌,其中A代表关羽,B代表张飞,* 代表士兵. 还有一个格子是空 ...

  3. 蓝桥杯-迷宫(DFS)

    蓝桥杯-迷宫(DFS) 题目描述 X 星球的一处迷宫游乐场建在某个小山坡上.它是由 10 \times 1010×10 相互连通的小房间组成的. 房间的地板上写着一个很大的字母.我们假设玩家是面朝上坡 ...

  4. 再次迷宫救人——BFS

    原创 上次用DFS解了迷宫救人:https://www.cnblogs.com/chiweiming/p/9313164.html 这次用BFS(广度优先搜索),实现广度优先搜索比深度优先搜索复杂,思 ...

  5. 2021年春季学期-信号与系统-第十四次作业参考答案-第九小题参考答案

    本文是 2021年春季学期-信号与系统-第十四次作业参考答案 中各小题的参考答案. §09 第九小题 9.证明DFT的对称性质: 若:DFT{x[n]}=X[k]DFT\left\{ {x\left[ ...

  6. 2021年春季学期-信号与系统-第十四次作业参考答案-第八小题参考答案

    本文是 2021年春季学期-信号与系统-第十四次作业参考答案 中各小题的参考答案. §08 第八小题 8. 以下序列的长度为\nN.,求其离散傅里叶变换的闭合表达式. (1) x[n]=sin⁡(ω0 ...

  7. 2021年春季学期-信号与系统-第十四次作业参考答案-第七小题参考答案

    本文是 2021年春季学期-信号与系统-第十四次作业参考答案 中各小题的参考答案. §07 第七小题 7.已知x[n]x\left[ n \right]x[n]是长度为N的序列.X[k]=DFT{x[ ...

  8. 2021年春季学期-信号与系统-第十四次作业参考答案-第六小题参考答案

    本文是 2021年春季学期-信号与系统-第十四次作业参考答案 中各小题的参考答案. §06 第六小题 6.已知序列x[n]x\left[ n \right]x[n]的长度为128,h[n]h\left ...

  9. 2021年春季学期-信号与系统-第十四次作业参考答案-第二小题参考答案

    本文是 2021年春季学期-信号与系统-第十四次作业参考答案 中各小题的参考答案. §02 第二小题 2.x[n]x\left[ n \right]x[n]如下图所示,试绘出解答: (1) x[n]x ...

最新文章

  1. IIS中的sc-win32-status——Win32状态详细说明
  2. gradle编译很慢解决方法
  3. java 的23种设计模式
  4. Dreanmwear能做php模板吗,PHPword模板的使用
  5. PSIM软件学习---05 自定义子电路元件参数
  6. 实例讲解朴素贝叶斯分类器
  7. 人工智能--人类的二次进化
  8. 在线2进制8进制10进制16进制进制转换工具
  9. java eclipse导入工程文件_如何在Eclipse软件中导入Java工程文件
  10. ubuntu环境下安装hyperledger fabric
  11. Unity 最新UnityWebRequest下载,同时显示下载进度,和 显示网速,今天贴出来和大家分享
  12. 动手开发一个有用的 ABAP ALV 工具 - 查看指定用户的 ABAP 传输请求试读版
  13. Microsoft CSP简介
  14. python编写简单脚本
  15. C#实现全盘扫描,找到符合要求的文件,并把路径写入到TXT中
  16. 当前使用的windows版本不支持该处理器,系统将错失重要的安全更新怎么办
  17. sql教师表存储过程
  18. 气节白露怎么翻译 white dew
  19. ultraISO虚拟光驱修改盘符
  20. webgis开发参考资料

热门文章

  1. 2010国内安防企业十强
  2. JS逆向之基础定位技巧
  3. oracle外键约束的总结
  4. java实现php md5加密解密,java_Java后端实现MD5加密的方法,前言 在我们开发是要考虑这 - phpStudy...
  5. 小T牛 绿色版 18.08.0100
  6. cisco交换机常用配置命令
  7. 中职计算机网络课后题,中职计算机网络技术试题.doc
  8. C语言与C++学习路线
  9. IIC总线 和 SPI总线 的不同
  10. Linux 作业第五周