![]()
public class Re{
//定义一个main方法
public static void main(String[] args){
//将没有阻碍的路以1代替
int[][]maze={
{1,1,1},
{0,0,1},
{1,1,1}
};
int[][]path= new int[3][3];//记录路径,1=走过
if(solveMaze(maze,0,0,path)){//从(0,0)开始向右向下走 遍历全部的位置
System.out.println("找到路经");
printPath(path);
}else{
System.out.println("无解");
}
}
static boolean solveMaze(int [][] maze,int x,int y,int[][] path){
// 越界或遇到障碍物
if(x>=3||y>=3||x<0||y<0||maze[x][y]==0){
return false;
}
//标记当前路径已经走过
path[x][y]=1;
//达到终点
if(x == 2 && y == 2) {
return true;
}
//尝试向右走
if(solveMaze(maze,x,y+1,path)) {
return true;
}
//尝试向下走
if(solveMaze(maze,x+1,y,path)) {
return true;
}
//回溯(取消标记)走过但发现有障碍更改为0
path[x][y]=0;
return false;
} //打印路径
static void printPath(int[][] path){
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(path[i][j]==1){//走过且OK的路径
System.out.print("("+i+","+j+")");
}
}
System.out.println();
}
}
}
![]()