迷宮遞迴
尚硅谷Golang課
迷宮遞迴
func SetWay(myMap *[8][7]int, a int, b int) bool {
//a,b 表示對地圖的那個點測試
//找到出口
if myMap[6][5] == 2 {
return true
} else {
//繼續找
if myMap[a][b] == 0 { //可探測的點
myMap[a][b] = 2 //踩上去了,再探上下左右,但是我知道要往下往右探
if SetWay(myMap, a+1, b) { //下
return true
} else if SetWay(myMap, a, b+1) { //右
return true
} else if SetWay(myMap, a-1, b) { //上
return true
} else if SetWay(myMap, a, b-1) { //左
return true
} else { //死路
myMap[a][b] = 3
return false
}
} else { //不可探測的點
return false
}
}
}
func main() {
//定義地圖 1=牆壁 0=沒走過的點 2=通路 3=走過的死路
var myMap [8][7]int
//四周設置圍牆
for i := 0; i < 7; i++ {
myMap[0][i] = 1
myMap[7][i] = 1
}
for i := 0; i < 8; i++ {
myMap[i][0] = 1
myMap[i][6] = 1
}
myMap[3][1] = 1
myMap[3][2] = 1
//看樣子
for i := 0; i < 8; i++ {
for j := 0; j < 7; j++ {
fmt.Print(myMap[i][j], " ")
}
fmt.Println()
}
SetWay(&myMap, 1, 1)
fmt.Println("已探完")
for i := 0; i < 8; i++ {
for j := 0; j < 7; j++ {
fmt.Print(myMap[i][j], " ")
}
fmt.Println()
}
}
上次修改於 2021-09-01
此篇文章的評論功能已經停用。