1.此次演示路径为下、右、上、左;
2.仅为了学习递归回溯算法。
public static void main(String[] args) { int[][] map = new int[8][7];//迷宫地图 //设置围墙,1为围墙 for(int i=0,j=0;i < 8 && j < 7;i++,j++) { map[0][j] = 1; map[7][j] = 1; map[i][0] = 1; map[i][6] = 1; } map[3][1] = 1; map[3][2] = 1; for(int[] i:map) { for(int j:i) { System.out.print(j); } System.out.println(); } System.out.println("-------------"); //递归回溯 f(map,1,1); for(int[] i:map) { for(int j:i) { System.out.print(j); } System.out.println(); } } /* * map表示地图; * i,j表示从哪个位置开始找; * 如果找到则返回true,否则返回false。 */ //如果map[i][j]为2,则为通路;为1表示围墙;为3表示死路;0表示还未走过 public static boolean f(int[][] map, int i, int j) { if(map[6][5] == 2) {//通路已找到 return true; }else { if(map[i][j] == 0) {//如果当前这个点还未走过 map[i][j] = 2;//假定此点能走通 if(f(map,i+1,j)) {//向下走 return true; }else if(f(map, i, j+1)) {//向右走 return true; }else if(f(map, i-1, j)) {//向上走 return true; }else if(f(map, i, j-1)) {//向左走 return true; }else { //此点走不通,置为3,直接返回false; map[i][j] = 3; return false; } }else {//如果不为0,则可能为1,2,3; return false; } } }