import java.util.Scanner; public class Eext { public static void main(String[] args) { //出迷宫 //思路: //1.先创建一个迷宫 用二维数组表示 int[][] map = new int[8][7]; //2.先规定 map 数组的元素值,1代表障碍物,0代表可以走的路 int[][] map = new int[8][7]; //3.将最上面的一行和最下面的一行设为1 for (int i = 0; i < 7; i++) { map[0][i] = 1; map[7][i] = 1; } //4.将最左边的一行和最右边的一行设为1 for (int i = 0; i < 8; i++) { map[i][0] = 1; map[i][6] = 1; } //将不规则的障碍物填入迷宫 map[3][1] = 1; map[3][2] = 1; //map[1][2] = 1; //map[2][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(); } //使用 findWay方法 T t1 = new T(); boolean arr = t1.findWay(map , 1 , 1); System.out.println(arr); System.out.println("\n寻路后迷宫地图情况:"); 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(); } } } class T { /* 1.findWay找路方法 如果找到了就返回true 否则返回false 2.map 表示迷宫 i,j表示 小球所在的位置, 初始化的位置为(1,1) 3.0表示没有障碍的路,1表示有障碍物,2表示可以走的路,3表示走过的死路 4.当map[6][5] = 2 时,则代表小球走出了迷宫,方法结束,否则继续 5.寻路策略:下 右 上 左 */ public boolean findWay(int[][] map , int i , int j) { if (map[6][5] == 2) { //代表走出了迷宫 return true; } else { if (map[i][j] == 0) { //假定可以走通 map[i][j] = 2; //使用寻路策略 确定该位置是否真的能走通 //寻路策略:下 右 上 左 if (findWay(map , i + 1, j)) { //向下走 return true; } else if (findWay(map , i, j + 1)) { //向右走 return true; } else if (findWay(map , i - 1, j)) { //向上走 return true; } else if (findWay(map , i, j - 1)) { //向左走 return true; } else { map[i][j] = 3; System.out.println("我失败了,但还没放弃。"); return false; } } else { return false; } } } }
标签:map,findWay,int,迷宫,System,问题,out From: https://www.cnblogs.com/shuqiqi/p/16964626.html