题解 | #迷宫问题#

迷宫问题

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;
        }
    }
}

全部评论

相关推荐

肖先生~:那年秋招闯进一位少年,人们都清楚:成功对他来说只是时间问题
点赞 评论 收藏
分享
程序员牛肉:继续沉淀吧同学,你这就是纯纯的流水线产品。 差不多的学历+两个烂大街项目。自身学历又不行,现在找啥实习呢。有点太浮躁了。多花点心思搞搞ai,开源和八股。这比你这段时间捣鼓一段小厂实习要好得多;
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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