问题 F: 解救小哈
题目描述
有一天,小哈一个去玩迷宫。但是方向感很不好的小哈很快就迷路了。小哼得知后便立即去解救无助的小哈。小哼当然是有备而来,已经弄清楚了迷宫地图,现在小哼要以最快速度去解救小哈。问题就此开始了…… 迷宫由n×m列的单元格组成,每个单元格要么是空地,要么是障碍物。你的任务是帮助小哼找到一条从迷宫的起点到小哈所在位置的最短路径,注意障碍物是不能走的,当然也不能走到迷宫之外。n,m≤100n,m≤100。
输入
第一行有两个数n 和m。n表示迷宫的行,m表示迷宫的列。接来下来n行m列为迷宫,0表示空地,1表示障碍物。最后一行4个数,前两个数为迷宫入口的x1和y1坐标。后两个为小哈的x2和y2坐标。
输出
一个整数表示小哼到小哈的最短步数。如果不能解救小哈则输出No Way!
样例输入
5 4
0 0 1 0
0 0 0 0
0 0 1 0
0 1 0 0
0 0 0 1
1 1 4 3
3 3
1 1 1
0 1 0
0 1 0
2 1 3 3
样例输出
7
No Way!
import java.util.*;
public class Main {static int n;static int m;static int next[][]={{0,1},{1,0},{0,-1},{-1,0}};static int [][]a;static int [][]b;static int x2,y2;static int min;public static void main(String[] args) {Scanner cin = new Scanner(System.in);while(cin.hasNext()) {n = cin.nextInt();m = cin.nextInt();a = new int[n + 1][m + 1];b = new int[n + 1][m + 1];for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {a[i][j] = cin.nextInt();}}int x1 = cin.nextInt();int y1 = cin.nextInt();x2 = cin.nextInt();y2 = cin.nextInt();b[x1][y1] = 1;min=9999999;dfs(x1,y1,0);if(min==9999999){System.out.println("No Way!");}else {System.out.println(min);}}cin.close();}private static int dfs(int x1, int y1,int i) {if (x1 == x2 && y1 == y2) {if (i< min) {min = i;}}int k, tx, ty;for (k = 0; k <= 3; k++) {tx = x1 + next[k][0];ty = y1 + next[k][1];if (tx < 1 || tx > n || ty < 1 || ty > m)continue;if (a[tx][ty] == 1 && b[tx][ty] == 0)//数组a的值变化时 只需将a[tx][ty] == 1的1改成题中可以通行的数字{b[tx][ty]=1;dfs(tx,ty,i+1);b[tx][ty]=0;}}return min;}}
问题 F: 解救小哈相关推荐
- 解救小哈——广度优先搜索bfs
有一天,小哈一个去玩迷宫.但是方向感很不好的小哈很快就迷路了.小哼得知后便立即去解救无助的小哈.小哼当然是有备而来,已经弄清楚了迷宫地图,现在小哼要以最快速度去解救小哈.问题就此开始了-- 迷宫由n行 ...
- 《啊哈算法》学习六 解救小哈2.0
今天还是通过解救小哈的游戏,来学习广度优先搜索算法. 规则如下: 小哈被困在终点,小哼从(1,1)出发去找小哈,每一步只能选择往上下左右走一格,不能走到锁所在地格子上,也不能走出图片限定的区域,求出小 ...
- 宽搜 c语言,啊哈算法之宽搜BFS解救小哈
简述 本算法摘选自啊哈磊所著的<啊哈!算法>第四章第三节的题目--BFS算法再次解救小哈.文中代码使用C语言编写,博主通过阅读和理解,重新由Java代码实现了一遍,以此来理解BFS算法.关 ...
- 解救小哈(dfs或bfs)
题目描述: 有一天,小哈一个人去玩迷宫.但是方向感很不好的小哈很快就迷路了.小哼得知后便立即去解救无助的小哈.小哼当然是有备而来,已经弄清楚了迷宫的地图,现在小哼要以最快的速度去解救小哈.问题就此开始 ...
- (四)万能的搜索 —— 2. 解救小哈
2. 解救小哈 任务: 迷宫由n行m列的单元格组成(n和m都小于等于50),每个单元格要么是空地,要么是障碍物. 任务是帮助小哼找到一条从迷宫的起点通往小哈所在位置的最短路径.注意障碍物是不能走的,当 ...
- 迷宫问题(解救小哈)
文章目录 解救小哈 完整代码 读入数据 输出数据 总结 解救小哈 迷宫由n行m列的单元格组成(n和m都<=50),每个单元格要么是空地要么是障碍物.小哼要以最快的速度解救小哈,帮助小哼找到一条从 ...
- 12032 解救小哈
标题: 解救小哈 标签: 搜索 广度优先搜索 详情: 有一天,小哈一个去玩迷宫.但是方向感很不好的小哈很快就迷路了.小哼得知后便立即去解救无助的小哈.小哼当然是有备而来,已经弄清楚了迷宫地图,现在小哼 ...
- JAVA算法:解救小哈(JAVA版)
JAVA算法:解救小哈(JAVA版) 有一天,小哈一个人去玩迷宫.但是方向感不好的小哈很快就迷路了.小哼得知后便去解救无助的小哈.此时的小哼已经弄清楚了迷宫的地图,现在小哼要以最快的速度去解救小哈.那 ...
- 解救小哈(深度优先,广度优先)
题目描述: 有一天,小哈一个去玩迷宫.但是方向感很不好的小哈很快就迷路了.小哼得知后便立即去解救无助的小哈.小哼当然是有备而来,已经弄清楚了迷宫地图,现在小哼要以最快速度去解救小哈.问题就此开始了-- ...
最新文章
- stackoverflow上Java相关回答整理翻译
- 【论文相关】历年CVPR、ICCV、ECCV论文合集下载
- 跑不出来_内蒙古23只狍子罕见列队出没,它们是出来透透气?
- JAVA和C浮点数,为什么在C ++和Java中使用float函数会产生不同的结果?
- chrome extension debug在哪?
- C# 在线PDF阅读
- WireGuard 的使用与配置详解
- flex: 1到底是什么意思?
- 【未来iPhone 手机中将加入卫星通信功能?】
- C#将ip地址转换成长整形数字的代码
- c语言编程输出主析取范式,c++编程:从键盘上任意输入一个主析取范式,输出与之等值的主合取范式...
- 一个基于QT的解析interproscan结果的C++成员函数
- 6大热门开源自动化测试框架【建议收藏】
- SpringBootSecurity与Shiro
- Bootstrap 下拉菜单(Dropdown)插件
- C语言初级篇-----循环语句详解
- mysql 负数类型_MySQL数据类型详解
- Tesla T4显卡安装及显卡自带显示屏蔽设置
- SQL数据库单行注释与多行注释
- 位图的简单实现(bitMap)