代码思路
1.创建二位数组作为迷宫
2.数字1为墙壁,2为经过的位置,3为死路,0为未探寻的位置
3,定义一个起点和终点,运用递归的方法,按照自己设计的寻找方向的优先级运行,直到让终点值为2则返回true,未找到返回false。
4.重新遍历输出二维数组,2的轨迹则为出口路径
代码如下
public class MiGongAPP {public static void main(String[] args) {// TODO 自动生成的方法存根int[][] map=new int[7][8];for(int i=0;i<7;i++) {map[i][0]=1;map[i][7]=1;}for(int j=0;j<8;j++) {map[0][j]=1;map[6][j]=1;}map[3][1]=1;map[3][2]=1;
// map[2][2]=1;
// map[1][2]=1;System.out.println("地图为:");for(int i=0;i<7;i++){for(int j=0;j<8;j++) {System.out.printf(map[i][j]+" ");}System.out.println();}setWay(map, 1, 1);System.out.println("出口轨迹:");for(int i=0;i<7;i++){for(int j=0;j<8;j++) {System.out.printf(map[i][j]+" ");}System.out.println();}}public static boolean setWay(int[][] map,int i,int j) {if(map[5][6]==2) {return true;}else {if(map[i][j]==0) {map[i][j]=2;//先将此位置定义已走过。遵循下右上左的优先级if(setWay(map,i+1,j)) {//向下return true;}else if(setWay(map,i,j+1)) {//向右return true;}else if(setWay(map,i-1,j)) {//向上return true;}else if(setWay(map,i,j-1)) {//向左return true;}else {//如果四个方向都不为0,则此位置为死路,重新定义map[i][j],并返回到回溯到上一个结点map[i][j]=3;return false;}}else {return false;}}}}