加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang数据结构之递归解决迷宫问题

发布时间:2020-12-16 09:18:09 所属栏目:大数据 来源:网络整理
导读:简单来说:递归就是函数/方法自己调用自己,只是每次传入不同的变量。 递归可以解决各种数学问题:n皇后问题、阶乘问题、汉诺塔、迷宫问题、球和篮子问题等等; maze.go package mazeimport ( " fmt " )func SetWay(myMap *[ 8 ][ 7 ] int ,i int ) bool { /

简单来说:递归就是函数/方法自己调用自己,只是每次传入不同的变量。

递归可以解决各种数学问题:n皇后问题、阶乘问题、汉诺塔、迷宫问题、球和篮子问题等等;

maze.go

package maze

import (
    "fmt"
)

func SetWay(myMap *[8][7]int,i int) bool {
    //分析什么情况下就找到通路
    if myMap[6][5] == 2 {
        return true
    } else如果是可以探测的
        if myMap[i][j] == 0 {
            假设是通的
            myMap[i][j] = 2
            依据下右上左进行探测
            if SetWay(myMap,i+1,j) {
                
            } else ) {
                 {
                死路
                myMap[i][j] = 3
                false
            }
        } 否则不能探测
            
        }
    }
}

func Maze() {
    0:代表没有走过的路
    1:代表墙
    2:代表是一个通路
    3:代表走过,但是不通
    var myMap [int
    for i := 0; i < 7; i++ {
        myMap[0][i] = 
        myMap[7][i] = 
    }
    8; i++ {
        myMap[i][0] = 
        myMap[i][6] = 
    }
    myMap[3][1] = 
    myMap[2] = 5][3] = 4] = 5] = 1
     {
        fmt.Println(myMap[i])
    }

    SetWay(&myMap,1,1)">)
    fmt.Println(探测完毕后的地图:)
     {
        fmt.Println(myMap[i])
    }
}

main.go

package main

import (
    go_code/data_structure/maze
)

func main() {

    maze.Maze()
}

运行结果:

f:goprojectsrcgo_codedata_structure>go run main.go
[1 1 1 1 1 1 1]
[1 0 0 0 0 0 1]
[1 0 0 0 0 0 1]
[1 1 1 0 0 0 1]
[1 0 0 0 0 0 1]
[1 0 1 1 1 1 1]
[1 0 0 0 0 0 1]
[1 1 1 1 1 1 1]
探测完毕后的地图:
[1 1 1 1 1 1 1]
[1 2 3 3 3 3 1]
[1 2 2 2 3 3 1]
[1 1 1 2 3 3 1]
[1 2 2 2 3 3 1]
[1 2 1 1 1 1 1]
[1 2 2 2 2 2 1]
[1 1 1 1 1 1 1]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读