题解 | 迷宫寻路

迷宫寻路

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

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {

    static class Node {
        int x;
        int y;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int m = in.nextInt();
        int n = in.nextInt();
        char[][] dataChars = new char[m][n];
        for(int i = 0; i < m; i++) {
            dataChars[i] = in.next().toCharArray();
        }
        //四个方向
        int[][] directs = new int[][]{{0,1},{1,0},{0,-1},{-1,0}};
        //节点是否访问,默认未访问
        boolean[][] visits = new boolean[m][n];
        Node first = new Node();
        first.x = 0;
        first.y = 0;
        Deque<Node> deque = new LinkedList<>();
        deque.add(first);
        visits[0][0] = true;

        while(!deque.isEmpty()) {
            Node currentNode = deque.poll();
            if(currentNode.x == m -1 && currentNode.y == n -1) {
                System.out.println("Yes");
                break;
            }
            for(int d = 0; d < directs.length; d++) {
                int nx = currentNode.x + directs[d][0];
                int ny = currentNode.y + directs[d][1];
                if(nx >=0 && nx <m && ny >=0 && ny <n && !visits[nx][ny] && dataChars[nx][ny] == '.') {
                    Node tempNode = new Node();
                        tempNode.x = nx;
                        tempNode.y = ny;
                        deque.add(tempNode);
                        visits[nx][ny] = true;
                }
            }
        }
        if(!visits[m-1][n-1]) {
            System.out.println("No");
        }
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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