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递归解决老鼠走迷宫问题相关推荐
- java递归老鼠走迷宫_递归算法求老鼠走迷宫(C语言)
/*说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁, 使用1来表示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下.右四个方向,在每前进一格之后就选 ...
- java递归老鼠走迷宫_老鼠走迷宫----------递归问题
老鼠走迷宫是一个典型的递归的问题,写几个这样的题才可以充分理解递归的过程. 写递归的过程有几点需要注意: (1)递归结束的条件 (2)递归过程的脉络,即逻辑要清晰. / // // 在迷宫中显示老鼠能 ...
- java代码老鼠走迷宫案例
java代码老鼠走迷宫案例 public class MiGong{//编写一个main方法public static void main(String[] args) {//思路// 1. 先创建迷 ...
- Java算法六:老鼠走迷宫
老鼠走迷宫(Mouse) 问题说明: 老鼠走迷宫是循环求解的基本类型,我们在二维数组中用2来表示迷宫的墙壁,使用1来表示老鼠的行走路径,并用程序求出从入口到出口的距离. 问题解答: 实际上是使用回溯算 ...
- 老鼠走迷宫(递归实现)
思路分析 使用递归回溯的思想来解决老鼠出迷宫 1. findWay 方法就是用来找出迷宫的路径的 2. 如果找到,就返回 true ,否则返回 false 3. map 就是二维数组,即表示迷宫 4. ...
- java 迷宫代码_老鼠走迷宫代码 JAVA
展开全部 //老鼠走迷宫程序 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Maze1 ...
- 老鼠走迷宫-java
推荐韩老师课程:https://www.bilibili.com/video/BV1fh411y7R8?t=260&p=225 老鼠走迷宫-Maze.java package lbxx.day ...
- java老鼠走迷宫算法_老鼠走迷宫java算法
说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表 示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下.右四个方向,在每前进一格之后就选一个 ...
- 【手把手带你学JavaSE】(项目展示)老鼠走迷宫和八皇后问题
目录 前言 老鼠走迷宫 MiGong.java 八皇后问题 Queen.java 前言 大家还记得当初C语言我们一起学习的递归吗?说好的要实现老鼠走迷宫和八皇后问题!他来了!!! 老鼠走迷宫 MiGo ...
最新文章
- 层展开/关闭 - 运动缓冲效果
- Django开发实战
- MOS管安全工作区SOA
- 网络推广——网络推广专员浅析新站应该如何提升长尾关键词的排名
- redis单线程架构
- CentOS6.8网络接口配置文件ifcfg-eth0
- HTTP basic auth
- java反射可以获得什么属性_java反射获得属性的值
- jquery解析java对象数组_Javascript / jQuery初学者:将对象推送到数组
- markdown图片设置
- `object.__init__`
- Linux运维基础入门(二):网络基础知识梳理02
- java画一个八卦_View绘制系列(9)-Canvas八卦图绘制
- 修改文件句柄:ulimit 系统设置脚本(避免设置不彻底而无效)
- win10如何截屏_win10使用技巧分享!
- 关于软件测试人员的几个职业规划方向
- 关于双非本科2020秋招,我想说的
- HDFS——JN扩容的正确姿势
- C# WinForm 界面控件
- CC00006.CloudOpenStack——|OpenStack组件.V01|——|openstack-keystone|组件说明|