思路分析

使用递归回溯的思想来解决老鼠出迷宫
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;}}}
}

老鼠走迷宫(递归实现)相关推荐

  1. java递归老鼠走迷宫_老鼠走迷宫----------递归问题

    老鼠走迷宫是一个典型的递归的问题,写几个这样的题才可以充分理解递归的过程. 写递归的过程有几点需要注意: (1)递归结束的条件 (2)递归过程的脉络,即逻辑要清晰. / // // 在迷宫中显示老鼠能 ...

  2. java递归老鼠走迷宫_递归算法求老鼠走迷宫(C语言)

    /*说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁, 使用1来表示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下.右四个方向,在每前进一格之后就选 ...

  3. 算法:老鼠走迷宫问题

    算法:老鼠走迷宫问题(初) [写在前面] 老鼠走迷宫问题的递归实现,是对递归思想的一种应用. [问题描述] 给定一个二维数组,数组中2表示墙壁,0表示通路,由此数组可展示为一个迷宫图.给定入口位置和出 ...

  4. c语言 老鼠乘法,c语言-老鼠走迷宫逐步理解

    c语言实现老鼠走迷宫 在没有智能手机的时代,不少人玩游戏会玩老鼠走迷宫这样的闯关游戏.每一关有着不同的地图场景,可能还会充斥着各种障碍. 老鼠走迷宫是经典的递回求解的算法题 我们用二维数组表示迷宫场景 ...

  5. 老鼠走迷宫---算法集

    问题描述 老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用 2 表示迷宫墙壁,使用 1 来表示老鼠的行走路径,试以程式求出由入口至出口的路径. 解决思路 老鼠的走法有上.左.下.右四个方向,在每前 ...

  6. java代码老鼠走迷宫案例

    java代码老鼠走迷宫案例 public class MiGong{//编写一个main方法public static void main(String[] args) {//思路// 1. 先创建迷 ...

  7. C语言-老鼠走迷宫(深度寻路算法)

    老鼠走迷宫-c语言(基于深度优先的寻路算法) 这个是学校的课设,刚开始有点头疼,但是感觉越做越有意思了,于是就有如下代码,可能相较于大佬还有差距,但是这是我目前所能做的最优的程序了吧! 话不多说,说一 ...

  8. C语言实现老鼠走迷宫(附源码)

    CSDN源码下载:C语言实现老鼠走迷宫.zip 1.需求分析   利用二维数组创建一个随机迷宫或者自定义迷宫,再在迷宫中找到一条从起点到终点的路径,并用图形界面显示. 2.概要设计 3.详细设计 输入 ...

  9. c语言递归算法老鼠走迷宫详解,递归算法求老鼠走迷宫(C语言)

    /*说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁, 使用1来表示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下.右四个方向,在每前进一格之后就选 ...

  10. 【经典算法】老鼠走迷宫问题

    老鼠走迷宫问题及其多个变种 一.说明 老鼠走迷宫问题的递归实现,是对递归思想的一种应用. 二.问题描述 给定一个二维数组,数组中2表示墙壁,0表示通路,由此数组可展示为一个迷宫图.给定入口位置和出口位 ...

最新文章

  1. bzoj 4871: [Shoi2017]摧毁“树状图”
  2. 复杂的结构化存取(一)
  3. 中华成语故事摄制组大公无私的释义
  4. java 文件 剪切_总结java中文件拷贝剪切的5种方式-JAVA IO基础总结第五篇
  5. 烂泥:【解决】VMware Workstation中安装ESXI5.0双网卡问题
  6. 谷歌开发者工具详解 Network篇
  7. python导入csv报错_Python Pandas read_csv报错
  8. jenkins+sonar+ios 基于object C(object-c-plugin-snapshot免费版)搭建
  9. 数字后端——布图规划
  10. php 执行文件tar打包,利用tar for windows对大量文件进行快速打包
  11. 让MessageBox在最前面弹出来的信息在
  12. Linux内核分析 - 网络[八]:IP协议
  13. poj2186【利用强连通分量】
  14. Two-Stream Convolutional Networksfor Action Recognition in Videos——学习笔记
  15. BIOS硬盘模式更改为AHCI模式,及更改后win10蓝屏的解决办法
  16. 美国PARKER派克永磁高速伺服电机——GVM电机
  17. 深圳非全日制计算机专业院校,深圳非全日制研究生招考院校
  18. 关于DRV8303/8301电路框图
  19. UG CAM API 二次开发批量创建程序组的功能写法,提供一个初始的程序组名进行批量创建
  20. 年度个人职业规划秘笈

热门文章

  1. 2023全新UI界面的彩虹站长【在线工具箱】系统源码-[全开源版本/附安装教程]
  2. java学习第一天,基本能力的学习
  3. js函数 传参 解密
  4. C++设计模式——单件模式(singleton pattern)
  5. Java中方法重写和方法重载的6个区别?
  6. QT菜单栏QAction设置选中
  7. destoon框架二次开发【整理】
  8. servlet生命周期的三个阶段
  9. 回收手机一般用什么软件测试,做二手手机回收的是用的什么检测软件?
  10. 骨传导耳机效果怎么样,骨传导耳机有什么优劣势