自闭症康复网,内容丰富有趣,生活中的好帮手!
自闭症康复网 > Java递归解决老鼠走迷宫问题

Java递归解决老鼠走迷宫问题

时间:2021-06-06 21:29:54

相关推荐

Java递归解决老鼠走迷宫问题

思路

1 表示障碍

代码

public class MiGong{public static void main(String[] args){int[][] map = new int[8][7];//迷宫地图//设置障碍物,1表示障碍for(int i = 0; i < 7; i++){map[0][i] = 1;map[7][i] = 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[2][2] = 1;//输出地图System.out.print("地图\n" + "============\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("\n");}myTool tool = new myTool();tool.findWay(map, 1, 1);//走路的情况System.out.print("走迷宫的情况\n" + "============\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("\n");}}}//出迷宫返回true//初始位置map[1][1],到了map[6][5]就算出迷宫//0 可以走 1 障碍物 2 走到的位置 3 走过的路,但是不通//当map[6][5] == 2时,递归结束//找路的策略:下 - 右 - 上 - 左class myTool{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;return false;} } else { //map[i][j] == 1, 2, 3return false;}}}}

1、调用findWay方法

2、如果找到,就返回true,否则返回false(true、false是返回给if语句的判断条件)

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

4、map[1][1]就是老鼠的位置,初始化的位置为(1,1)

5、因为是递归的找路,所以我先规定map数组的各个值的含义

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

6、当map[6][5]=2就说明找到通路,就可以结束,否则就继续找.

7、找路策略下->右->上->左

结果

如果觉得《Java递归解决老鼠走迷宫问题》对你有帮助,请点赞、收藏,并留下你的观点哦!

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