题解 | #迷宫问题#
迷宫问题
https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
static List<String> ans = new ArrayList<>();
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while(in.hasNext()){
int m=in.nextInt();
int n=in.nextInt();
int[][] matrix = new int[m][n];
for(int i=0 ; i<m ; ++i){
for(int j=0 ; j<n ; ++j){
matrix[i][j] = in.nextInt();
}
}
List<String> path = new LinkedList<>();
dfs(matrix, 0, 0, path);
//System.out.println(ans.size());
for(int i=0 ; i<ans.size() ; ++i){
System.out.println(ans.get(i));
}
}
}
public static void dfs(int[][] matrix, int i, int j, List<String> path){
int m=matrix.length, n=matrix[0].length;
if(i<0 || i>=m || j<0 || j>=n){
return;
}
if(matrix[i][j] == 1){
return;
}
if(i==m-1 && j==n-1){
path.add("("+i+","+j+")");
ans = new ArrayList<>(path);
return;
}
matrix[i][j] = 1;
path.add("("+i+","+j+")");
dfs(matrix, i+1, j, path);
dfs(matrix, i-1, j, path);
dfs(matrix, i, j+1, path);
dfs(matrix, i, j-1, path);
path.remove("("+i+","+j+")");
}
}
