迷宫问题---递归解决

题目描述

在这里插入图片描述

代码实现

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;}}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20周年献礼:Visual Studio 2017正式版3月7日发布

微软透露 Visual Studio 2017 的开发工作已经接近尾声&#xff0c;即将进入 RTM 阶段。现在&#xff0c;微软正式宣布&#xff0c;Visual Studio 2017 正式版将于 3 月 7 日正式发布&#xff01;值得一提的是&#xff0c;今年正好是 Visual Studio 诞生 20 周年纪念。 为了表示…

JDK环境变量配置(一次性成功)

1.变量名&#xff1a; JAVA_HOME 变量值&#xff1a;&#xff08;变量值填写你的jdk的安装目录&#xff0c;例如本人是 E:\Java\jdk1.8.0&#xff09; 2.变量名&#xff1a; Path 变量值&#xff1a; ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 3.变量名&#xff1a; CLASSPATH …

jquery插件star-rating.js实现星级评分特效

转载自 jquery插件star-rating.js实现星级评分特效 Bootstrap Star Rating是一个简单而强大的jQuery插件实现星级分数评级。支持像分数星填充和RTL输入先进的功能。在利用纯CSS-3造型使控制重点开发。该插件使用引导标记和造型默认情况下&#xff0c;但它可以覆盖与其他任何C…

C#winforms实现windows窗体人脸识别

在之前我写过一篇博客&#xff0c;是关于javaweb实现人脸识别&#xff0c;包括数据库以及java源码&#xff0c;还有相关的jar包都已经上传了&#xff0c;有想要了解的可以去看看&#xff0c;地址是&#xff1a;java实现人脸识别源码 实现了之后又正好朋友开发C#&#xff0c;想要…

OSS.Common获取枚举字典列表标准库支持

上篇&#xff08;.Net Standard扩展支持实例分享&#xff09;介绍了OSS.Common的标准库支持扩展&#xff0c;也列举了可能遇到问题的解决方案。由于时间有限&#xff0c;同时.net standard暂时还没有提供对DescriptionAttribute的支持&#xff0c;所以其中的转化枚举到字典列表…

程序员的情人节礼物:当天微软开始Build 2017登记

2016 年 12 月&#xff0c;微软曾经宣布 Build 2017 大会将于 2017 年 5 月 10 日至 12 日在美国西雅图举行&#xff1b;时隔两个月&#xff0c;关于 Build 2017 大会的消息&#xff0c;终于有了新的进展。 2 月 10 日&#xff0c;微软在官方博客中宣布 Build 2017 大会将开启注…

查找前端依赖 jquery css js 时间控件 不要用远程依赖 会变化的 card

BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务 找到你要的版本

使用VS Code从零开始开发调试.NET Core 1.1

使用VS Code 从零开始开发调试.NET Core 1.1。无需安装VS 2017 RC 即可开发调试.NET Core 1.1应用。 .NET Core 1.1 发布也有一段时间了&#xff0c;最大的改动是从 project.json 还原回了csproj 。 今天微软发布 .NET Core SDK 1.0 RC4 版本&#xff0c;离RTM版本也很近了。 对…

冒泡排序+推导过程

推导过程 代码实现 package com.atguigu.sort;import java.util.Arrays;/*** 创建人 wdl* 创建时间 2021/3/21* 描述*/ public class BubbleSort {public static void main(String[] args) {int arr[]{3,9,-1,10,-2};//为了容易理解&#xff0c;我们吧冒泡排序的演变过程给大家…

.Net Core 之 MSBuild 介绍

前言 关于 .NET Core 旧版本的 sdk 介绍可以参看我以前的 这篇 文章。 8 个小时前&#xff0c;.NET Core 项目组释放了 .NET Core 新一轮的 sdk 工具更新&#xff0c;即 RC4 版本 &#xff0c;这个版本也就是意味着基本功能已经确定了&#xff0c;下个版本应该就是RTM版了&…

mysql加索引快很多

3秒 变成 0.1秒 左连接的字段加索引 order by字段加索引 频繁使用的检索字段加索引

jQuery 基础教程 (四)之jQuery中的DOM操作

一、jQuery 中的 DOM 操作 &#xff08;1&#xff09;DOM(Document Object Model—文档对象模型)&#xff1a;一 种与浏览器, 平台, 语言无关的接口, 使用该接口可以 轻松地访问页面中所有的标准组件 &#xff08;2&#xff09;DOM 操作的分类: (A)DOM Core: DOM Core 并不专…

.Net大户的选择:Windows Container在携程的应用

数人云上海&深圳两地“ 容器之Mesos/K8S/Swarm三国演义”的嘉宾精彩实录第四弹&#xff01;小数已经被接连不断的干货搞晕了&#xff0c;沉浸技术的海洋好幸福~Windows container在国内的实践还比较少&#xff0c;携程作为.Net大户&#xff0c;率先进行了调研和实践应用&am…

真正理解线程上下文类加载器(多案例分析)

转载自 真正理解线程上下文类加载器&#xff08;多案例分析&#xff09; 前置知识&#xff1a; java类加载器不完整分析 前言 此前我对线程上下文类加载器&#xff08;ThreadContextClassLoader&#xff0c;下文使用TCCL表示&#xff09;的理解仅仅局限于下面这段话&#x…

Docker4Dev #6 使用 Windows Container 运行.net应用

关于d4d系列&#xff1a;之前这个系列叫做docker4dotnet&#xff0c;因为当时主要是为了能够探索在docker上运行.net应用&#xff1b;现在我觉得应该叫做docker4developer&#xff0c;因为我希望能够帮助更多的开发人员使用docker技术。今天这篇就算是新的Docker4Dev系列的开始…

Windows 容器

什么是容器 它们是隔离、资源控制且可移植的操作环境。 基本上&#xff0c;容器是一个隔离的位置&#xff0c;应用程序可在其中运行&#xff0c;而不会影响系统的其他部分&#xff0c;并且系统也不会影响该应用程序。 容器是虚拟化的下一个演化。 如果你在容器内&#xff0c;看…

选择排序+推导过程

图解 代码实现 package com.atguigu.sort;import java.util.Arrays; import java.util.List;/*** 创建人 wdl* 创建时间 2021/3/21* 描述*/ public class SelectSort {public static void main(String[] args) {int []arr{101,34,119,1};System.out.println("排序前"…

Echart折线图 柱状图

echat_百度搜索 Examples - Apache ECharts Examples - Apache ECharts Examples - Apache ECharts 修改左侧的数据 点击右侧下载可以得到html页面 Examples - Apache ECharts Examples - Apache ECharts