public class MazeRecursion {
int[][] maze = new int[9][9];
public void initMaze(){
for (int i = 0;i < 9;i++)
{
maze[0][i] = 1;
maze[i][0] = 1;
maze[8][i] = 1;
maze[i][8] = 1;
}
maze[2][0] =1;
maze[2][3] =1;
maze[2][4] =1;
maze[2][5] =1;
maze[2][6] =1;
maze[2][7] =1;
maze[3][6] = 1;
maze[4][6] = 1;
maze[5][6] = 1;
maze[8][6] = 1;
maze[5][7] = 1;
maze[5][8] = 1;
maze[6][7] = 1;
maze[3][3] = 1;
maze[3][3] = 1;
maze[4][3] = 1;
maze[5][3] = 1;
for (int i =0 ;i < 9;i++)
{
for (int j = 0;j < 9;j++)
{
System.out.printf("%d\t",maze[i][j]);
}
System.out.println();
}
}
/**
* maze[7][7] end pos
* @param i begin pos
* @param j
* @return
* walking logic down->right->left->up
* 0 haven't walked 1 barrier 2 route 3 have walked
*/
public boolean setWay(int i,int j){
if (maze[7][7] == 2)
{
return true;
}else
{
if (maze[i][j] == 0 )
{
maze[i][j] = 2;
if (setWay(i+1,j))
{
return true;
}else if (setWay(i,j+1)){
return true;
}else if (setWay(i,j-1)){
return true;
}else if (setWay(i-1,j))
{
return true;
}else{
maze[i][j] = 3;
return false;
}
}else
{
return false;
}
}
}
public static void main(String[] args) {
MazeRecursion mazeRecursion = new MazeRecursion();
mazeRecursion.initMaze();
System.out.println("-------------------------");
mazeRecursion.setWay(4,4);
for (int i = 0;i < 9;i++)
{
for (int j = 0;j <9;j++)
{
System.out.printf("%d\t",mazeRecursion.maze[i][j]);
}
System.out.println();
}
}
}
递归解决迷宫问题 Java
最新推荐文章于 2024-06-16 09:46:44 发布