原创

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

如图,人质在黄色点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. base64图片上传,并根据不同项目进行智能修改图片

    前台传图片的base64格式,后台处理方式//处理图片信息 返回对应的路径public function uploadBaseIma($imgArr){ $result = array(); //将路 ...

  2. linux(centos7) 安装nginx

    linux(centos7) 安装nginx 1.14(stable) 版本 Nginx配置文件常见结构的从外到内依次是「http」「server」「location」等等,缺省的继承关系是从外到内, ...

  3. gitlab的本地搭建和部署使用

    公司现在的代码管理是在公司的服务器上部署了gitlab,这样既方便协同开发,有可以很好的保护代码的安全性. 那么我们就来研究一下 如何给自己的服务器上部署gitlab吧! 学习源头:https://w ...

  4. 蓝桥杯 算法训练 ALGO-36 传纸条

    算法训练 传纸条   时间限制:1.0s   内存限制:512.0MB 问题描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而 ...

  5. random类类型

    random r=new random(): int shu=r.next(3):非负数

  6. Javascript 推荐一个图形化展示库

    觉得这个库不错: http://almende.github.io/chap-links-library/index.html

  7. Struts2接受页面传值过程中出现input的问题

    其实我在使用Struts2的时候,遇到要求返回input的时候不算少.一般我们在使用Struts2的时候,都会返回SUCCESS/ERROR,或者是NONE以到Strtuts的配置文件中再进行相应的处 ...

  8. C#三层架构实例

    对于三层的概念查也查了,看也看了,下面是我找的一个关于三层的简单实例,真正看一下它是如何具体实现的. 我们先来一起看看 实体类-Model 实质:实体类就是在完成数据库与实体类对应的功能,一个类是一张 ...

  9. Oracle 11G的间隔(INTERVAL)分区

    -- Create table create table MS_BIGTABLE_LOG ( record_date DATE, col_1 VARCHAR2(), col_2 VARCHAR2() ...

  10. spring-cloud配置eureka客户端

    spring-cloud配置eureka客户端 eureka用来发现其他程序 需要提前配置eureka服务端,具体看 https://www.cnblogs.com/ye-hcj/p/10292944 ...