数据结构和算法—迷宫回溯问题(1)|学习笔记

简介: 快速学习 数据结构和算法—迷宫回溯问题(1)

开发者学堂课程【Go 语言核心编程 - 数据结构和算法:  数据结构和算法—迷宫回溯问题(1)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/627/detail/9863


数据结构和算法—迷宫回溯问题(1)

        

内容介绍:

一、走迷宫

二、设行列

三、迷宫设值

四、代码


一、走迷宫

首先整个代码在后台完成,写一个文件--main 点够,此案例涉及信息较多。

第一步先写一个地图,模拟一个迷宫,用二维模拟,var 地图,按照图来说,一个八行七列,用 int 表示,可以表示不同的列,比如0表示信息,7表示信息,然后定几个规则。

如果是1,元素的值为就代表一堵墙,墙就代表无法前进,不知道什么时候停下来;第二点如果这个元素为0,就是还不知道这个路可不可以走通,没有被探测过的路径,先写代码

 

二、设行列

如果是2则是一个通路,地图会形成一个2指向的线,能够走通,是一个通路。

如果将来这个元素,是一个圈,无法前进而只能退回,小圆圈的点代表走不通的死路,这个标识表示曾经走过但是是死路。

如果元素的值为3,是走过的一条路,但是走不通,有了二维数组后,先把墙建起来。这个墙是有规律的,最左边和右边全是墙,先把最上面的地图的最上和最下设置为1,这个设置的时候写一个0,i 小于7 i++,map 7=1,map。

输出地图,for 循环,i<8,i++,然后输出,先不要换行,构建一个地图,打开 vscale,写一个 main 结构的文件,打包,import,案例包含的东西较多,弄一个地图出来,用一个二维数组模拟一下迷宫,先创建一个二维数组,

 

三、迷宫设值

先创建一个迷宫,var map,按照刚才的图,八行七列,用 int 表示,因为 int 可以用不同数组表示不同情况,如果 map 的值是1,就代表一堵墙,墙就代表走不了,迷宫没有通路。

第二点,如果元素为0,代表还没有探路,不知道是否能够走通,没有走过的点。

第三点,如果元素变成了2,表示是一个通路,可以一直走下去,地图形成一个2指向的线。

第四点,假设是一个圈,发现走不了,会退回,小圆圈就是死胡同,走不通,要有一个标识,表示曾经走过,但是走不通,把最左和最右,相当于对行,写8,列是不变的,一边写i,一边写0,把最上边和最下边,最左边和最右边写0,即可完成。

如果元素的值为3表示为走过的路,但是走不通,这几个规则之后,继续往后走,先把墙建起来,墙上面的点是有规律的,最左边和最右边是墙,初始化,先把地图的最上和最下设置为1,for i,i<7,i++,,,map 然后输出,for i,现在便利输出地图,for 循环一下就行,for j:=8;i++,然后输出计算,目前已把最上边和最下面设为1了,接下来把最左边和最右边也设为1,就可以知道墙。

分开写最左和最右,行发生变化,列是不变的,执行,可以看到最上边和最下面最左边最右边都已设置为1,地图完成。

 

四、代码

Package main

Import (

“fmt”  

)

Func main() {

// 先创建一个二维数组,模拟迷宫

// 规则

//1、如果元素的值为1,就是墙

//2、如果元素的值为0,就是没有走过的点

//3、如果元素的值为2,是一个通路

//4如果元素的值为3,是走过的点,但是走不通

var myMap [8][7]int

//先把地图的最上和最下设置为1

for i: = 0; i < 7; i++ {

myMap[0][i] = 1

myMap[7][i] = 1

}

//先把地图的最左和最右设置为1

for i: = 0; 1< 8; i+ + {

myMap[i][0] = 1

myMap[i][6] = 1

//输出地图

for i: = 0; i < 8; i++ {

for j: = 0; j < 7; j++ {

fmt.Print(myMap[i][j]),“”)

}

 

相关文章
|
6天前
|
算法 JavaScript 前端开发
第一个算法项目 | JS实现并查集迷宫算法Demo学习
本文是关于使用JavaScript实现并查集迷宫算法的中国象棋demo的学习记录,包括项目运行方法、知识点梳理、代码赏析以及相关CSS样式表文件的介绍。
第一个算法项目 | JS实现并查集迷宫算法Demo学习
|
6天前
|
机器学习/深度学习 算法 Java
[算法与数据结构] 谈谈线性查找法~
该文章详细介绍了线性查找法的基本概念与实现方法,通过Java代码示例解释了如何在一个数组中查找特定元素,并分析了该算法的时间复杂度。
|
8天前
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
|
8天前
|
算法 前端开发
一文了解贪心算法和回溯算法在前端中的应用
该文章深入讲解了贪心算法与回溯算法的原理及其在前端开发中的具体应用,并通过分析LeetCode题目来展示这两种算法的解题思路与实现方法。
|
2月前
|
算法
【初阶数据结构】复杂度算法题篇
该方法基于如下的事实:当我们将数组的元素向右移动 k 次后,尾部 kmodn 个元素会移动至数组头部,其余元素向后移动 kmodn 个位置。
|
2月前
|
机器学习/深度学习 人工智能 算法
【人工智能】线性回归模型:数据结构、算法详解与人工智能应用,附代码实现
线性回归是一种预测性建模技术,它研究的是因变量(目标)和自变量(特征)之间的关系。这种关系可以表示为一个线性方程,其中因变量是自变量的线性组合。
50 2
|
2月前
|
算法
【初阶数据结构篇】二叉树算法题
二叉树是否对称,即左右子树是否对称.
|
2月前
|
算法 索引
【初阶数据结构篇】单链表算法题进阶
深拷贝应该正好由 n 个全新节点组成,其中每个新节点的值都设为其对应的原节点的值。
|
2月前
|
存储 算法
【初阶数据结构篇】顺序表和链表算法题
此题可以先找到中间节点,然后把后半部分逆置,最近前后两部分一一比对,如果节点的值全部相同,则即为回文。
|
2天前
|
传感器 算法 C语言
基于无线传感器网络的节点分簇算法matlab仿真
该程序对传感器网络进行分簇,考虑节点能量状态、拓扑位置及孤立节点等因素。相较于LEACH算法,本程序评估网络持续时间、节点死亡趋势及能量消耗。使用MATLAB 2022a版本运行,展示了节点能量管理优化及网络生命周期延长的效果。通过簇头管理和数据融合,实现了能量高效和网络可扩展性。
下一篇
无影云桌面