题解 | #迷宫问题#

迷宫问题

https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc

import java.util.LinkedList;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int N = in.nextInt();
        int M = in.nextInt();

        int[][] maze = new int[N][M];

        for (int i = 0; i < N; i++) {
            for (int j = 0; j < M; j++) {
                maze[i][j] = in.nextInt();
            }
        }


        LinkedList<Point> points = new LinkedList<>();
        dp(points, maze, 0, 0, 0);

        for (Point point : points) {
            System.out.println("(" + point.i + "," + point.j + ")");
        }


        // from 1: 上  2下,左 3, ,右4
    }


    public static boolean dp(LinkedList<Point> points, int[][] maze, int i, int j,
                             int from) {

        if (i >= maze.length || j >= maze[0].length) {
            return false;
        }

        if (i < 0 || j < 0) {
            return false;
        }

        if (maze[i][j] == 1) {
            return false;
        }

        points.add(new Point(i, j));


        if (i == maze.length - 1 && j == maze[0].length - 1) {
            return true;
        }

        if (from != 4 && dp(points, maze, i, j + 1, 3)) {
            return true;
        }

        if (from != 2 && dp(points, maze, i + 1, j, 1)) {
            return true;
        }

        if (from != 1 && dp(points, maze, i - 1, j, 2)) {
            return true;
        }

        if (from != 3 && dp(points, maze, i, j - 1, 4)) {
            return true;
        }

        points.removeLast();
        return false;
    }


    public static class Point {
        int i;
        int j;

        public Point(int i, int j) {
            this.i = i;
            this.j = j;
        }
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-23 17:32
那如果是字节外包呢?据我所知工牌无区别&nbsp;可以晒出去装X的那种
秋盈丶:残酷的是,都一样,管你是不是字节,不过我是很反对这种的,本是同根生,市场行情决定了用工的模式会有很多外包,分层只是单纯为了筛选
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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