开发者学堂课程【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.P
rint(myMap[i][j]),
“”
)
}