原创

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

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

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

 import java.util.Scanner;

 public class Maze_rescue {

     static int n;    //行
static int m; //列
static int min=99999;
static int maze[][];
static int flag[][]; //1代表已走过
static int dir[][]= {{0,1},{1,0},{0,-1},{-1,0}}; //右、下、左、上 static void dfs(int x,int y,int step) { //step代表步数
if(maze[x][y]==2) { //找到人质
if(step<min) {
min=step;
}
return;
}
for(int i=0;i<4;i++) {
int dx=x+dir[i][0];
int dy=y+dir[i][1];
if(dx<0 || dy<0 || dx>=n || dy>=m) { //越界
continue;
}
if(maze[dx][dy]==1 || flag[dx][dy]==1) { //判断是否障碍点或已走过点
continue;
}
flag[dx][dy]=1; //标志此点已经走过
dfs(dx,dy,step+1);
flag[dx][dy]=0; //回溯
}
} public static void main(String[] args) { Scanner reader=new Scanner(System.in);
n=reader.nextInt();
m=reader.nextInt();
maze=new int[n][m]; //编号从(0,0)开始
flag=new int[n][m]; //标记路径的数组
flag[0][0]=1; //起点不算入步数
for(int i=0;i<n;i++) { //建造迷宫,0表示空地,1表示障碍,2代表人质点
for(int j=0;j<m;j++) {
maze[i][j]=reader.nextInt();
}
}
dfs(0,0,0);
System.out.println(min);
} }

12:11:00

2018-07-15

迷宫救人——DFS小题的更多相关文章

  1. DFS小题

    原创 题目为:()()()+()()()=()()() 将1~9这9个数字填入括号,每个数字只能用一次. 枚举: public class Test { public static void main ...

  2. poj1564 Sum It Up dfs水题

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

  3. 再次迷宫救人——BFS

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

  4. 常让人误解的一道js小题

    一道小题引发的深思 今天无意中看到一个js笔试题,不由得想起初学js那会被各种题目狂虐的心酸,虽说现在也会被笔试题所虐,但毕竟比之前好了很多,下面就是我的个人理解,欢迎拍砖.指正: var x = 1 ...

  5. 一些js小题(一)

    一些js小题,掌握这些对于一些常见的面试.笔试题应该很有帮助: var a=10; function aa(){ alert(a); } function bb(){ aa(); } bb();//1 ...

  6. 关于理解python类的小题

    今天看了python部落翻译的一篇<一道python类的小题>文章,感觉挺有启发性,记录下来: print('A') class Person(object): print('B') de ...

  7. POJ 1321 棋盘问题(DFS板子题,简单搜索练习)

    棋盘问题 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 44012   Accepted: 21375 Descriptio ...

  8. 20181014xlVBA获取小题零分名单

    Sub GetZeroName() Dim Dic As Object Const SUBJECT = "科目名称" Dim Key As String Dim OneKey Di ...

  9. 关于SQL的几道小题详解

    关于SQL的几道小题详解 当我们拿到题目的时候,并不是急于作答,那样会得不偿失的,而是分析思路,采用什么方法,达到什么目的,还要思考有没有简单的方法或者通用的方法等等,这样才会达到以一当十的效果,这样 ...

随机推荐

  1. ReactJS开发环境搭建与相关工具介绍

    现在Web开发的技术几年前相比可谓变化之大.各种各样的框架,各种各样的工具,让Web开发效率更高,开发出来的效果更好.同时带来的是开发环境的复杂度相比以前是成倍的增加.ReatJS框架是现在比较流行的 ...

  2. flask之flask-restful

    0.需要的库flask_restful from flask import Flask from flask_cors import CORS 1.参数的获取self.parser.add_argum ...

  3. 比赛安排(穷举法或dfs)

    比赛安排 时间限制: 1 Sec  内存限制: 125 MB提交: 11  解决: 10[提交][状态][讨论版][命题人:外部导入] 题目描述 设有2n(n<=6)个球队进行单循环比赛,计划在 ...

  4. mysql特性及部署规范

    --分支版本,mysql对cpu,内存,io子系统资源利用特点--oracle mysql,mariadb,percona server--部署规范建议,系统安装,mysql安装,其他规范互联网业务为 ...

  5. MFC调试的几个技巧

    TCHAR pStr[] = _T("this is a test!"); void* p = (void*)pStr; TRACE(_T("pStr is %s\n&q ...

  6. log4net 使用总结- (3)在ASP.NET MVC 中使用

    把输出到sqlserver数据库中. 输出到数据库中和文件中类似,具体配步骤如下 第一步.创建数据库 CREATE TABLE [dbo].[Log] ( [Id] [int] IDENTITY (1 ...

  7. 微信小程序简单步骤记录

  8. [原创]Spring Boot + Mybatis 简易使用指南(二)多参数方法支持 与 Joda DateTime类型支持

    前言 今天在开发练习项目时遇到两个mybatis使用问题 第一个问题是mapper方法参数问题,在参数大于一个时,mybatis不会自动识别参数命名 第二个问题是Pojo中使用Joda DateTim ...

  9. Winform绑定图片的三种方式

    1.绝对路径: this.pictureBox2.Image=Image.FromFile("D:\\001.jpg"); 2.相对路径: Application.StartupP ...

  10. java游戏制作之水果忍者

    水果忍者的原理很简单,主要就是采用随机的方式是画面上面出现水果. package Fruitninja; import java.awt.Dimension; import java.awt.Grap ...