一、迷宫回溯问题分析
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;
}
本文深入探讨了迷宫回溯问题,详细分析了通过贴墙行走策略解决迷宫问题的方法,并提供了具体的代码实现,包括如何标记已走路径,以及如何在遇到障碍时进行回溯。
988

被折叠的 条评论
为什么被折叠?



