题解 | 迷宫寻路
迷宫寻路
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");
}
}
}
查看3道真题和解析