题解 | 迷宫寻路

迷宫寻路

https://www.nowcoder.com/practice/0c8930e517444d04b426e9703d483ed4

import java.util.*;

/**
 * @author: wangbo
 * @date: 2026/3/28 17:05
 */

public class Main {
    public static String[][] grip = new String[1][1];
    public static Boolean[][] flag = new Boolean[1][1];

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        String[] num = s.split(" ");
        int n = Integer.parseInt(num[0]);
        int m = Integer.parseInt(num[1]);
        grip = new String[n][m];
        flag = new Boolean[n][m];
        //建图
        for (int i = 0; i < n; i++) {
            String line = scanner.nextLine();
            char[] charArray = line.toCharArray();
            for (int j = 0; j < m; j++) {
                grip[i][j] = String.valueOf(charArray[j]);
            }
        }
        //寻路径
        boolean res = reached(0, 0, n - 1, m - 1);
        System.out.println(res ? "Yes" : "No");
    }


    public static boolean reached(Integer i, Integer j, Integer n, Integer m) {
        if (i.equals(n) && j.equals(m)) {
            return true;
        }
        if (i < 0 || j < 0 || i > n || j > m) {
            return false;
        }
        //更新是否走过的标志
        Boolean arrived = flag[i][j];
        if (arrived != null) {
            return false;
        }
        flag[i][j] = true;

        if (grip[i][j].equals("#")) {
            return false;
        }
        return reached(i - 1, j, n, m)
               || reached(i + 1, j, n, m)
               || reached(i, j - 1, n, m)
               || reached(i, j + 1, n, m);
    }
}

全部评论

相关推荐

03-24 17:57
门头沟学院 Java
yakuso:你这头像哈哈哈
点赞 评论 收藏
分享
Gardenia06...:刚开始学是这样的,可以看看左神和灵神都讲的不错
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务