300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 老鼠走迷宫(递归实现)

老鼠走迷宫(递归实现)

时间:2020-07-31 03:16:45

相关推荐

老鼠走迷宫(递归实现)

思路分析

使用递归回溯的思想来解决老鼠出迷宫

1. findWay 方法就是用来找出迷宫的路径的

2. 如果找到,就返回 true ,否则返回 false

3. map 就是二维数组,即表示迷宫

4. i,j就是老鼠的位置,初始化的位置为(1,1)

5. 因为要递归找路,所以要规定 map 数组的各个值的含义

6. 0 表示可以走 ; 1 表示障碍物 ; 2 表示可以走 3 表示走过,但是走不通是死路

7. 先确定老鼠找路策略 下 -> 右 -> 上 -> 左

代码实现

package Recursion;public class _02_Migong {public static void main(String[] args) {//迷宫地址用一个二维数组表示,地图大小为8行7列int[][] map = new int[8][7];//用 1 表示墙, 2 表示路//将最上面一行和最后一行全设置为 1for (int i = 0; i < 7; i++) {map[0][i] = 1;//第 1 行置位 1map[7][i] = 1;//第 8 行置位 1}//将最左边一列和最右边一列全都设置为 1for (int j = 0; j < 8; j++) {map[j][0] = 1;//第 1 列置位 1map[j][6] = 1;//第 7 列置位 1}//单独这只两个障碍map[3][1] = 1;map[3][2] = 1;//遍历二维数组,查看其中的元素,画出地图,看看是否正确/* 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 给老鼠找路_03_MGLX t = new _03_MGLX();//传入地图,初始位置为(1,1)t.findWay(map, 1, 1);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();}}}package Recursion;public class _03_MGLX {public boolean findWay(int[][] map, int i, int j) {if (map[6][5] == 2) {//map[6][5]是出口,说明已经找到路线return true;} else {if (map[i][j] == 0) {//当前前进位置标记为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;return false;}}else{//当前前进方向标记不为 0,不可走return false;}}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。