迷宫问题
/**
*
* @author zjl
*
*/
public class Maze {
public static void main(String[] args) {
//创建地图
int[][] maze = createMazeMap();
//输出地图
for(int i = 0;i<8;i++) {
for(int j = 0;j<8;j++) {
System.out.print(maze[i][j]+" ");
}
System.out.println();
}
System.out.println();
System.out.println("------------------------------");
//规划路线得到路线图
System.out.println("每一步的坐标:");
//起点为(1,1)
getMazeRouteMap(maze, 1, 1);
System.out.println();
//输出路线图
System.out.println("------------------------------");
for(int i = 0;i<8;i++) {
for(int j = 0;j<8;j++) {
System.out.print(maze[i][j]+" ");
}
System.out.println();
}
}
/**
* 创建地图
* @return
*/
public static int[][] createMazeMap(){
int[][] maze = new int[8][8];
for(int i = 0;i<8;i++) {
for(int j = 0;j<8;j++) {
if(i==0||i==7||j==0||j==7) {
maze[i][j]=1;
}else {
maze[i][j] = 0;
}
}
}
maze[5][1]=1;
maze[5][2]=1;
maze[1][4]=1;
maze[2][4]=1;
maze[3][2]=1;
maze[3][3]=1;
maze[3][4]=1;
maze[6][7]=0;
return maze;
}
/**
* 规划路线
* @param map
* @param i
* @param j
* @return
*/
public static boolean getMazeRouteMap(int[][] map,int i,int j) {
if(i==6&&j==7) {
System.out.print("("+i+","+j+")");//输出坐标
map[i][j]=2;
return true;
} else {
if(map[i][j]==0) {
System.out.print("("+i+","+j+")");//输出当前坐标
map[i][j] = 2; //假设当前坐标可走通
if(getMazeRouteMap(map, i, j+1)) { //往右走
return true;
} else if (getMazeRouteMap(map, i+1, j)) {//往下走
return true;
}else if (getMazeRouteMap(map, i-1, j)) {//往上走
return true;
}else if (getMazeRouteMap(map, i, j-1)) {//往左走
return true;
}else { //无法走通
map[i][j] = 3; //标记坐标(无法走通3)
return false;
}
}
}
return false;
}
}
测试结果