题解 | 迷宫问题
迷宫问题
https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(scanner.hasNext()) { int row = scanner.nextInt(); int column = scanner.nextInt(); int[][] vals = new int[row][column]; List<Integer> rows = new ArrayList<>(); List<Integer> columns = new ArrayList<>(); for(int i = 0; i < row; i ++) { for(int j = 0; j < column; j ++) { vals[i][j] = scanner.nextInt(); } } dfs(vals,0,0,rows,columns); for(int i = 0; i < rows.size(); i ++) { System.out.println("(" +rows.get(i) + "," + columns.get(i) + ")"); } } } public static boolean dfs(int[][] vals,int row,int column,List<Integer> rows,List<Integer> columns) { rows.add(row); columns.add(column); vals[row][column] = 1; if(row == vals.length - 1 && column == vals[0].length - 1) { return true; } //向上走 if(row - 1 >= 0 && vals[row -1][column] == 0 && dfs(vals,row - 1,column,rows,columns)) { return true; } //向右走 if(column + 1 < vals[0].length && vals[row][column + 1] == 0 && dfs(vals,row,column + 1,rows,columns)) { return true; } //向下走 if(row + 1 < vals.length && vals[row + 1][column] == 0 && dfs(vals,row + 1,column,rows,columns)) { return true; } //向左走 if(column - 1 >= 0 && vals[row][column - 1] == 0 && dfs(vals,row,column - 1,rows,columns)) { return true; } //走到这儿说明此路不通 rows.remove(rows.size() - 1); columns.remove(columns.size() - 1); return false; } }