要求:按照下右上左的顺序判断路径
package com.practice;
public class Maze {
public static void main(String[] args){
int [][] map = new int[7][7];
for(int i = 0; i < map.length; i++){//设置初始迷宫
map[0][i] = 1;
map[6][i] = 1;
map[i][0] = 1;
map[i][6] = 1;
}
map[3][1] = 1;
map[5][2] = 1;
System.out.println("原始迷宫如下:");
for(int i = 0; i < map.length; i++){
for(int j = 0; j < map[i].length; j++){
System.out.print(map[i][j] + " ");
}
System.out.println();
}
F f = new F();
f.Fideway(map,1,1);//传入[1,1]
System.out.println("迷宫路线如下:");
for(int i = 0; i < map.length; i++){
for(int j = 0; j < map[i].length; j++){
System.out.print(map[i][j] + " ");
}
System.out.println();
}
}
}
/*
1、规定迷宫路障 0--未走过,1--障碍,2--走过的 可通行,3--不可通行
2、规定出口[5,5]、入口[1,1]
3、按照下右上左的顺序
4、找到返回true 未找到返回false
*/
class F{
public boolean Fideway(int [][] map, int i, int j){
if(map[5][5] == 2){//出口已找到,直接返回true
return true;
}else{//出口没找到,判断行走路径
if(map[i][j] == 0){
map[i][j] = 2;//暂时假定此位置可通行 标记为2
if(Fideway(map, i + 1, j)){//i表示行,j表示列,i+1表示方向下
return true;
}else if(Fideway(map, i, j +1)){//右
return true;
}else if(Fideway(map, i -1, j)){//上
return true;
}else if(Fideway(map, i, j - 1)){//左
return true;
}else{//假定失败,此位置的4个方向均不可通,则标记此位置为3,并
map[i][j] = 3;
return false;
}
}else{
return false;
}
}
}
}