迷宫(三)

蒜头君利用BFS算法解决了迷宫的最短路径问题,本文通过示例解释如何计算并验证迷宫的最短逃出步数。在Java中,使用数组实现队列比内置队列更快。
摘要由CSDN通过智能技术生成

经过思考蒜头君终于解决了怎么计算一个迷宫的最短路问题,于是蒜头君找到一个新的迷宫图,来验证自己是否真的会计算一个迷宫的最短路。

为了检验自己计算的是否正确,蒜头君特邀你一起来计算。

输入格式
第一行输入两个整数 nn 和 mm,表示这是一个 n \times mn×m 的迷宫。

接下来的输入一个 nn 行 mm 列的迷宫。其中’@‘表示蒜头君的位置,’#‘表示墙,蒜头君无法通过,’.‘表示路,蒜头君可以通过’.‘移动,所有在迷宫最外围的’.'都表示迷宫的出口(蒜头君每次只能移动到四个与他相邻的位置——上,下,左,右)。

输出格式
输出整数,表示蒜头君逃出迷宫的最少步数,如果蒜头君无法逃出迷宫输出 -1−1。

数据范围
1 \le n,m \le 151≤n,m≤15。

输出时每行末尾的多余空格,不影响答案正确性

样例输入1 复制
9 13
#############
#@…#
#####.#.#.#.#
#…#
#.#.#.#.#.#.#
#.#…#.#
#.#.#.#.#.#.#
#…#
#####.#######
样例输出1 复制
11
样例输入2 复制
4 6
#.####
#.#.##
#…@#

样例输出2 复制
5

套用bfs模板,java还是不能用自带的队列,用数组比较快

mport java.util.Scanner;

/**
 * Created on 10:10  24/02/2020
 * Description:
 *
 * @author Weleness
 */

public class Main {
   
    static int N = 3000;//N需开大点
    static int r, c;
    static char[][] map = new char[N][N];//用于保存地图
    static boolean[][] vis = new boolean[N][N];//标识是否访问过的点
    static int[][] dir = {
   {
   -1, 0}, {
   1, 0}, {
   0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值