迷宫问题(求一条可行路径(java语音实现,递归法))
迷宫问题
/ * * @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;}}
测试结果