一、迷宫回溯问题分析
1.选择一个方向,贴着墙走
2.同一个点不能走两遍以上
3.墙为3,没走的点为0,走一次的点为1,走两次的点为2
二、代码实现
//3表示墙,0表示没走,1表示走过一遍,2表示走过两遍
private static int[][] select(int[][] arr,int i,int j){
//左面有墙
if(arr[i][j-1]==3){
//下面可以走,向下走
if(arr[i+1][j]<2){
arr[i+1][j] = arr[i+1][j]+1;
return select(arr, i+1, j);
}
//下面不可以走
else{
//右面可以走,向右走
if(arr[i][j+1]<2){
arr[i][j+1] = arr[i][j+1]+1;
return select(arr, i, j+1);
}
//右面不可以走,向上走
else{
arr[i-1][j] = arr[i-1][j]+1;
return select(arr, i-1, j);
}
}
}
//下面有墙
//右面有墙
//上面有墙
else {
return arr;
}