递归解法
迷宫问题
http://www.nowcoder.com/questionTerminal/cf24906056f4488c9ddb132f317e03bc
递归解法。
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ int n = sc.nextInt(); int m = sc.nextInt(); int[][] num = new int[n+2][m+2]; for(int i=0;i<m+2;i++){ num[0][i] = 1; // 第一行 最后一行为 1 num[n+1][i] = 1; } for(int j=0;j<n+2;j++){ num[j][0] = 1; num[j][m+1] = 1; } for(int i=1;i<n+1;i++){ for(int j=1;j<m+1;j++){ num[i][j] = sc.nextInt(); } } setWay(num,1,1,n,m); for(int i=1;i<n+1;i++){ for(int j=1;j<m+1;j++){ if(num[i][j] ==2) System.out.println("("+(i-1)+","+(j-1)+")"); } } } } public static boolean setWay(int[][] num,int i ,int j,int a,int b){ // 1 表示墙,2表示走且可以走,3表示走过走不通 if(num[a][b] ==2){ // 右下角走通了 return true; }else{ if(num[i][j]==0){ // 0 可以走 // 按照 下右上左 num[i][j]=2; if(setWay(num,i+1,j,a,b)){ return true; }else if(setWay(num,i,j+1,a,b)){ return true; }else if(setWay(num,i-1,j,a,b)){ return true; }else if(setWay(num,i,j-1,a,b)){ return true; }else{ // 死路 num[i][j] = 3; return false; } }else{ // map[i][j] !=0 1 2 3 return false; } } } }