题目描述

代码实现

package com.atguigu.recursion;/*** @创建人 wdl* @创建时间 2021/3/21* @描述*/
public class MiGong {public static void main(String[] args) {//先创建一个二维数组,模拟迷宫//地图int[][] map = new int[8][7];//使用1表示墙//上下全部置为1for (int i = 0; i < 7; i++) {map[0][i]=1;map[7][i]=1;}//左右全部置为1for (int i = 0; i < 8; i++) {map[i][0]=1;map[i][6]=1;}//设置挡板,1表示map[3][1]=1;map[3][2]=1;
//        map[1][2]=1;map[2][2]=1;//输出地图System.out.println("地图的情况");for (int i = 0; i < 8; i++) {for (int j = 0; j < 7; j++) {System.out.print(map[i][j]+" ");}System.out.println();}//使用递归回溯给小球找路(引用类型)setWay(map,1,1);//输出新的地图,小球走过,并标识过的地图System.out.println("小球走过,并标识过的地图情况");for (int i = 0; i < 8; i++) {for (int j = 0; j < 7; j++) {System.out.print(map[i][j]+" ");}System.out.println();}}//使用递归回溯来给小球找路//说明//1.map表示地图//2.i,j表示从地图哪个位置开始找(1,1)//3.如果小球能到map[6][5]位置,则说明通路找到//4.约定,当map[i][j]为0表示没有走过,当为1表示墙;2表示通路可以走 3.表示该点已经走过,但是走不通//5.在走迷宫时,需要确定一个策略(方法)下->右->上->左,如果该点走不通,再回溯/**** @param map 表示地图* @param i 从哪个位置开始找* @param j* @return 如果找到通路,就返回true,否则返回false*///使用递归回溯给小球找路public static boolean setWay(int [][]map,int i,int j){if(map[6][5]==2){//通路已经找到OKreturn true;}else {if(map[i][j]==0){//如果当前这个点还没有走过//策略(方法)下->右->上->左走map[i][j]=2;//假定该点是可以走通if (setWay(map,i+1,j)){//向下走return true;}else if(setWay(map,i,j+1)){//向右走return true;}else if (setWay(map,i-1,j)){//向上走return true;}else if(setWay(map,i,j-1)){//向左走return true;}else {//说明该点是走不通的,是死路map[i][j]=3;return false;}}else {//如果map[i][j]!=0,可能是1,2,3return false;}}}}

迷宫问题---递归解决相关推荐

  1. Java 递归解决 quot;仅仅能两数相乘的计算器计算x^yquot; 问题

    Java 递归解决 "仅仅能两数相乘的计算器计算x^y" 问题 /*** 求一个数的乘方* 求x^y,y是一个正整数. 设计算器仅仅能计算两数相乘,不能一次计算n个数相乘. * 知 ...

  2. python3数字全排列怎么搞_python使用递归解决全排列数字示例

    第一种方法:递归 复制代码 代码如下: def perms(elements): if len(elements) <=1: yield elements else: for perm in p ...

  3. 迷宫问题(栈解决)--2015年8月9日19:23:23v1.0版

    1.问题描述 多年以来,迷宫问题一直是令人感兴趣的题目.实验心理学家训练老鼠在迷宫中寻找食物.许多神秘主义小说家也曾把英国乡村花园迷宫作为谋杀现场.计算机工作者也对迷宫感兴趣.因为它可以展现栈的巧妙应 ...

  4. c语言递归汉诺塔次数,c语言递归解决汉诺塔参数变化的疑惑

    c语言递归解决汉诺塔参数变化的疑惑 答案:3  信息版本:手机版 解决时间 2020-04-05 14:20 已解决 2020-04-05 10:49 #include void main() {vo ...

  5. 使用递归解决斐波那契数列的性能问题

    使用递归解决斐波那契数列的性能问题 参考文章: (1)使用递归解决斐波那契数列的性能问题 (2)https://www.cnblogs.com/mlw1814011067/p/9439651.html ...

  6. c语言递归解决汉诺塔问题

    c语言递归解决汉诺塔问题 参考文章: (1)c语言递归解决汉诺塔问题 (2)https://www.cnblogs.com/didiaoxiaoguai/p/6686407.html 备忘一下.

  7. 【C语言】利用递归解决猴子吃桃问题

    [C语言]利用递归解决猴子吃桃问题 参考文章: (1)[C语言]利用递归解决猴子吃桃问题 (2)https://www.cnblogs.com/ieybl/p/6597937.html 备忘一下.

  8. 100个python算法超详细讲解:递归解决分鱼问题

    1.问题描述 A.B.C.D.E这5个人合伙夜间捕鱼,凌晨时都已经疲惫不堪,于是各自在河边的 树丛中找地方睡着了.第二天日上三竿时,A第一个醒来,他将鱼平分为5份,把多余的 一条扔回河中,然后拿着自己 ...

  9. 递归解决常见爬楼梯走一步或是两步问题,走多步也是相同的道理!

    递归解决爬楼梯问题 上楼梯过程中,一次可以走1阶,也可以走两阶,如果有n阶楼梯,一共可以有多少种走法? 推理: 我们在上楼梯的过程通过一阶或是两阶的走法,不断减少楼梯的步数,也就是n阶台阶我们可以通过 ...

最新文章

  1. 由点到面 旅游让丝路明珠敦煌更加智慧
  2. 顺序表基本操作在主函数中的实现
  3. windows IOCP模型
  4. jQuery简单易用的网页内容打印插件
  5. 朋友圈新增访客记录?大众点评辟谣”被放弃”;百度 7 款 APP 进入 App Store 前十 | 极客头条...
  6. 手机版php7怎么安装,Centos7 安装 PHP7最新版的详细教程
  7. poj1013 Counterfeit Dollar
  8. 计算机网络超详细笔记(六):传输层
  9. 七部门查处奥数班遇尴尬 学生齐喊“出去”
  10. Python中while循环练习——打印星星总结
  11. ICRA2022 SLAM相关论文整理
  12. 微信表情的字符编号完整版【图文并茂哦!】
  13. Android开发样式问题总结【持续更新】
  14. 独家对话AAAI、ACM、ACL三会会士Raymond J. Mooney | 香侬专栏
  15. SQL Server 配置管理器中Browser灰色无法启动解决办法
  16. 【C++】什么是对象?什么是类?
  17. 解析复杂深度学习项目构建
  18. pandas使用merge函数将多个dataframe数据连接起来、设置how参数为outer指定全连接(outer join)、left_on参数指定左侧dataframe的连接字段
  19. 股票配资炒股技巧是什么?
  20. 基于AIOT综合能源管控平台开发探讨

热门文章

  1. 下一个更大元素 leetcode-496
  2. 操作系统内存管理--简单、页式、段式、段页式
  3. Java 开发Web Service的几种方式
  4. HDU - 7073 Integers Have Friends 2.0 随机化 + 质因子
  5. P4781 【模板】拉格朗日插值
  6. CF1034E Little C Loves 3 III(神仙构造+FWT_OR卷积)
  7. 洛谷P1852:跳跳棋(LCA,树形结构)
  8. YbtOJ#532-往事之树【广义SAM,线段树合并】
  9. AT3611-Tree MST【点分治,最小生成树】
  10. P3181-[HAOI2016]找相同字符【SAM】