面试算法之迷宫回溯
一、构建迷宫
//构建迷宫
var mymap [8][7] int
for i:=0;i<7;i++{
mymap[0][i]=1
mymap[7][i]=1
}
for j:=0;j<8;j++{
mymap[j][0]=1
mymap[j][6]=1
}
for i:=0;i<8;i++{
for j:=0;j<7;j++{
fmt.Printf("%d ",mymap[i][j])
}
fmt.Println()
}
二、迷宫回溯
package main
import (
"fmt"
)
func FindWay(mymap *[8][7]int,i int, j int)bool{
if mymap[6][5]==2{ //到达终点
return true
}else{
if mymap[i][j]==0{ //右路走
//下右左上方向寻找
mymap[i][j]=2
if FindWay(mymap,i+1,j){
return true
}else if FindWay(mymap,i,j+1){
return true
}else if FindWay(mymap,i,j-1){
return true
}else if FindWay(mymap,i+1,j){
return true
}else{
return false
}
}else{ //没路了
return false
}
}
}
func main(){
//构建迷宫
var mymap [8][7] int
for i:=0;i<7;i++{
mymap[0][i]=1
mymap[7][i]=1
}
for j:=0;j<8;j++{
mymap[j][0]=1
mymap[j][6]=1
}
FindWay(&mymap,1,1)
for i:=0;i<8;i++{
for j:=0;j<7;j++{
fmt.Printf("%d ",mymap[i][j])
}
fmt.Println()
}
}
看完如果觉得有点帮助请点赞支持,谢谢