递归问题之老鼠出迷宫
1、小球得到的路径,和程序员设置的找路策略有关,即:找路的上下左右的顺序相关
2、在得到小球路径时,可以先使用(下右上左),再改成(上右下左),看看路径是不是有变化
3、测试回溯现象
主函数:/*思路* 1、先创建迷宫,用二维数组表示 int[][] map = new int[8][7];* 2、先规定 map 数组的元素值:0 表示可以1,1 表示障碍物* */int[][] map = new int[8][7];//3、将最上面的一行和最下面的一行,全部设置为1for (int i = 0;i < map[0].length;i++){map[0][i] = 1;map[7][i] = 1;}//4、将最左边一列和最右边一列,全部设置为1for (int i = 1;i < map.length - 1;i++){map[i][0] = 1;map[i][6] = 1;}map[3][1] = 1;map[3][2] = 1;//初始化后的数组如下图所示:
方法:
class T{public boolean findWay(int[][] map, int i, int j){}
}
//使用递归回溯的思想来解决老鼠处迷宫问题
//思路
/*1、findWay方法就是专门来找迷宫的路径
* 2、如果找到,就返回true,否则返回false
* 3、map 是二维数组,表示迷宫
* 4、i,j 是老鼠的位置,初始化的位置为map[1][1]
* 5、因为是递归的找路,需先规定 map 数组的各个值的含义
* 0 表示可以走,1 表示障碍物, 2 表示可以走, 3 表示走过,但是走不通,是思路
* 6、当map[6][5] = 2,说明找到了通路,就可以退出,否则继续找。
* 定义寻找路径的方式为:
* 策略1:下->右->上->左
* 策略2:上->右->下->左
* */
public class MiGong {public static void main(String[] args){/*思路* 1、先创建迷宫,用二维数组表示 int[][] map = new int[8][7];* 2、先规定 map 数组的元素值:0 表示可以1,1 表示障碍物* */int[][] map = new int[8][7];//3、将最上面的一行和最下面的一行,全部设置为1for (int i = 0;i < map[0].length;i++){map[0][i] = 1;map[7][i] = 1;}//4、将最左边一列和最右边一列,全部设置为1for (int i = 1;i < map.length - 1;i++){map[i][0] = 1;map[i][6] = 1;}map[3][1] = 1;map[3][2] = 1;
// //验证回溯
// map[2][2] = 1;
// //验证死迷宫
// map[2][1] = 1;
// map[1][2] = 1;//输出当前的地图T t1 = new T();boolean foundWay = t1.findWay(map, 1, 1);//老鼠起始坐标:(1,1)if (foundWay){System.out.println("老鼠找到了出迷宫的路径,为迷宫数组中'2'对应连线。");for (int i = 0;i < map.length;i++) {for (int j = 0; j < map[i].length; j++) {System.out.print(map[i][j] + "\t");}System.out.println();}}else {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] + "\t");}System.out.println();}}}
}class T {public boolean findWay(int[][] map, int i, int j){if(map[6][5] == 2){//当map[6][5] == 2时,表示老鼠找到了迷宫出口return true;}else if(map[i][j] == 0){map[i][j] = 2;//策略1:下->右->上->左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;}
// //策略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 || map[i][j] == 2 ||map[i][j] == 3return false;}}}
}
按照不同得寻路策略,老鼠出迷宫得路径图(图中蓝色路径)
验证回溯现象时,迷宫设置,以及运用寻路策略1,老鼠出迷宫路径图。
递归问题之老鼠出迷宫相关推荐
- 老鼠出迷宫问题(Java)(递归)
问题描述: 老鼠出迷宫:一只老鼠被放入迷宫之中,迷宫中设有障碍物(墙),通过向上,下,左,右移动,从而,找出正确的路线,抵达指定位置,从而走出迷宫.迷宫如图所示: 我们可以假设小老鼠的起始位置在A点, ...
- 老鼠出迷宫问题(递归问题)
public class MiGong{public static void main(String[] args){//思路 //1. 先创建迷宫,用二维数组表示 int[][]//2. 先规定 m ...
- java实现老鼠出迷宫
如图一只小老鼠从起点通过一些障碍到达终点,四周的墙壁不能通行,求通过计算得出迷宫路径,使老鼠成功逃出迷宫 算法设计 ①分而治之思想: 首先将老鼠出迷宫问题分成两部分求解,第一,迷宫的设计,第二,迷宫的 ...
- 递归回溯——老鼠出迷宫
目录 前言 设计思路 绘制地图 寻找出路 绘制路线 总结 前言 这是一道关于递归回溯的经典题目,在布下障碍的迷宫中,为老鼠朋友找到一条可以逃出困境的路线,本文将为大家详细讲解如何运行递归的方法让老鼠走 ...
- 递归老鼠出迷宫,猴子吃桃练习以及注意事项。
public class Method02 {public static void main(String[] args) {/*请使用递归的方式求出斐波那契数思路分析1.当N=1时,接过为12.当n ...
- 数据结构,Java实现递归回溯,寻找出迷宫路线,解决迷宫问题
/*** @Author: Yeman* @Date: 2021-10-28-22:52* @Description:*/ public class Labyrinth {public static ...
- 老鼠出迷宫详解(人人能搞懂)
常见问题: 小伙伴们在第一次遇到该问题时,思路大家都能清楚,就是遇到走不通的时候就换方向走,但是却不知道代码是如何走的. 解决问题: 代码如下: public static void main(Str ...
- 老鼠逃出迷宫(递归)
如图一样的迷宫,红色部分代表有障碍物,老鼠从(1,1)坐标开始出发,坐标(6,5)代表迷宫出口,求出老鼠的逃离路径. /*老鼠出迷宫问题*/ public class P225MiGong {//先用 ...
- Java-老鼠出迷宫(递归)
文章目录 问题描述 一.解题思想 二.编写代码 1.创建迷宫 2.写出findway方法 3.整体代码测试如下 三.总结 问题描述 一只小老鼠从起点通过一些障碍到达终点,四周的墙壁不能通行,请设计出迷 ...
最新文章
- 超实用总结:AI实践者需要用到的10个深度学习方法
- 返回倒数第 k 个节点
- LeetCode Two Sum III - Data structure design
- Django - 分页器
- 《云计算》学习笔记4——Google的云计算原理与应用(分布式结构化数据表BigTable)
- 指针常量 和 指向常量的指针区别
- python引入redis_使用python向Redis批量导入数据
- Mysql 导出 sql的执行结果到 csv文件
- USB接口定义详解(图)
- dx逆向建模步骤_产品温度的逆向建模的系统和方法与流程
- matlab求广义逆及线性方程组的解
- java让字体闪动_java 字体闪烁
- python eml解析_如何在python中读取eml文件?
- wps图片与图片间距怎么调整_wps图片与图片间距怎么调整_微信图文排版,字间距,行间距,怎么调整合适?......
- 要成就事业,更要分享快乐 记上海润邦(集团)有限公司董事长兼总经理李东
- 使用codemirror打造你自己的前端在线编辑器
- 华盛顿大学计算机本科录取,华盛顿大学美国排名及录取难度
- Yara引擎编译和发布
- 三大流行BI分析平台推荐,企业数据化选择工具
- jQuery写突出显示