问题描述:


题目摘自尚硅谷,小球在红色范围内运动,从规定的位置按照一定的运动规则到达指定位置,即可完成迷宫。


算法思路:


因为地图和挡板需要我们自己设置,所以先填充地图,运用二维数组对地图进行填充,我们设置1为墙体,2为小球走过的地方,还可以设置3为小球无法通过的地方,在此之后,我们还要对小球设置一个运动规则,比如说我们设置小球先向下运动,如果不行的话,再向右运动,如果还不行的话,向上运动,最后再向左运动,通过这个规则我们可以控制小球的回溯。

当进入回溯函数时,首先设置出口,当碰到墙体和刚刚走过的路时,会返回false值,当走到终点时,返回true值。


代码:


/回溯迷宫问题
public class MiGong {static int map[][] = new int[8][7];//设置迷宫数组public static void main(String[] args) {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;//设置完迷宫的墙体和挡板System.out.println("地图预览");print();if(recu(map,1,1)){System.out.println("闯关成功");print();}}private static boolean recu(int map[][],int i, int j){if(map[i][j] == 1 || map[i][j] == 2) //当碰到墙体和已经走过的地方时,返回false值{return false;}if(i == 6 && j == 5 ){   //当走到最后一块时,闯关成功map[i][j] = 2;return true;}map[i][j] = 2;      //走过的地方标记为2if(recu(map,i+1,j) || recu(map,i,j+1) || recu(map,i-1,j) || recu(map, i,j-1))   //进行按照一定运动规则进行运动return true;return false;}//打印地图private static void print(){for(int i = 0; i < 8; i++){for(int j = 0; j < 7; j++){System.out.print(map[i][j]+" ");}System.out.println();}}
}

迷宫问题----经典回溯法解决相关推荐

  1. 回溯法解决tsp问题 matlab,回溯法求解tsp问题

    回溯法以这种工作方式递归地在解空间中搜索, 直至找到所 要求的解或解 空间中已无活结点时为止. 回溯法求解 TSP 问题,首先把所有的顶点的访问标志初始化为 0,...... 回溯法求解 TSP 问题 ...

  2. 回溯算法背包问题迭代c语言,回溯法解决0_1背包问题(迭代和递归)

    问题:0/1背包问题 例子:weight数组代表物品重量,value数组代表物品价值,M代表背包容量.背包是按单位价值递减的顺序排列的,即value[i]/weight[i]>value[i-1 ...

  3. 利用回溯法解决1-9之间添加+或-或使得运算结果为100的问题

    问题描述 编写一个在1,2,-,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性.例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 1 ...

  4. 回溯法解决0-1背包问题

    回溯法解决0-1背包问题 参考文章: (1)回溯法解决0-1背包问题 (2)https://www.cnblogs.com/womendouyiyang/p/10957527.html (3)http ...

  5. 编程解决素数环问题Java_回溯法解决素数环问题java实现

    素数环问题: 输入正整数n,把整数1,2,3--,n组成一个环,使得相邻两个整数之和均为素数,输出所有方案,注意同一个环应恰好输出一次.n<==16 样例输入: 6 样例输出: 1 4 3 2  ...

  6. 回溯法解决部落冲突问题

    回溯法解决部落冲突问题 实验内容 问题描述 思路分析 方法步骤 实验代码 实验内容 原始部落byteland中的居民为了争抢有限的资源,经常发生冲突.几乎每个居民都有它的仇敌.部落酋长为了组织一支保卫 ...

  7. 回溯法解决n皇后问题

    回溯法解决n皇后问题 题目要求: 在n×n格的棋盘上放置彼此不受攻击的n个皇后.按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子.n后问题等价于在n×n格的棋盘上放置n个皇后, ...

  8. 回溯法解决力扣79题单词搜索

    回溯法解决力扣79题单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字母 ...

  9. 回溯法解决工作分配问题

    回溯法解决工作分配问题 问题描述: 设有n件工作分配给n个人.为第i个人分配工作j所需的费用为c[i][j] .试设计一个算法,计算最佳工作分配方案,为每一个人都分配1 件不同的工作,并使总费用达到最 ...

最新文章

  1. MySQL提权简单方法
  2. 裁掉杰森伯恩,招揽人工智能,AI间谍厉害在哪?
  3. [转贴]NIOS II 软核中EPCS配置芯片的存储操作
  4. 线上慢查询?试试这几个优化思路!
  5. VUE—从入门到飞起(一)
  6. java beans_java beans的概念及应用?
  7. LeetCode 2145. 统计隐藏数组数目(前缀和)
  8. 解决Pycharm文件夹中同级目录导包报错的问题
  9. CentOS 7.2 安装zabbix 3.4
  10. dedecms织梦仿麦站网模板源码下载站源码
  11. python编程案例教程-quot;怎样编写一个教学案例quot;python编程案例教程电子教案...
  12. centos mysql压缩文件直接恢复_CentOS下利用mysqlbinlog恢复MySQL数据库
  13. Eclipse/NSight解决办法:unsolved inclusion stdio.h/map/string/queue/list
  14. [Slackware13.0学习笔记]上网问题
  15. 编写递归算法,计算二叉树叶子结点的数目。
  16. Android系统启动源码分析
  17. 手机号归属地 mysql脚本_手机号码归属地能否取消? 这些热点问题,工信部回复了...
  18. eclipse将安卓项目commit至github本地仓库后,项目bin文件夹下不生成apk且运行报错
  19. Android项目迁移到Androidx经验总结
  20. 英语语法篇 - 查漏补缺

热门文章

  1. 知识点索引:一元函数的极值
  2. CSU-ACM2017暑期训练5-三分 D - Toxophily HDU - 2298
  3. mysql创建表里主码和外码_外码必须是另一个关系的主码吗?主键主码 外键外码是同一个东西吗?...
  4. Apple?apple!
  5. windows server 2012 进程 出现大量桌面窗口管理器的 解决方法
  6. 网络攻防——黛蛇蠕虫病毒
  7. 面试秘籍大放送,编测编学独家秘籍遭外泄?!
  8. YYLabel和YYTextView的使用
  9. stm32控制半导体制冷器实现饮水机保温制冷功能
  10. phoenix-5.1.2 Inconsistent namespace mapping properties. Cannot initiate connection as SYSTEM