go語言的迷宮的廣度優先搜尋

2021-08-23 12:24:06 字數 1932 閱讀 2480

自主學習

package main

import (

"os"

"fmt"

)func main()

fmt.println()

} fmt.println("--------")

steps :=walk(maze,point,point)

//列印走的路徑

for _,row := range steps

fmt.println() }}

type point struct

//走的路徑,指下乙個方向

var dirs = point,,,}

func (p point)add(r point) point

}//獲取點point在grid位置的值

func (p point)at(grid int) (int,bool)

if p.j < 0 || p.j >=len(grid[p.i])

return grid[p.i][p.j],true

}func walk(maze int,start,end point) int

q := point

for len(q) > 0

for _,dir := range dirs

val,ok = next.at(steps)

if !ok || val != 0

if next == start

cursteps,_ := cur.at(steps)

steps[next.i][next.j] = cursteps + 1

} }return steps

}func readmaze(filename string) int

var row,col int

fmt.fscanf(file,"%d %d",&row,&col) //讀取檔案第一行兩個數並跟據row、col的位址,將其賦值

fmt.println("row:",row,"col:",col) //row: 6 col: 5

/* 測試fmt.fscanf函式

fmt.fscanf(file,"%d",&row)

fmt.print("row:",row)//row:6

fmt.fscanf(file,"%d",&ces)

fmt.print("ces:",ces)//ces:0,換行會變為0

*/ maze := make(int,row)//宣告乙個row行的二維切片

for i:=range maze

} }return maze

}

其中列印結果為:

row: 6 col: 5

0 1 0 0 0

0 0 0 1 0

0 1 0 1 0

0 1 1 0 0

0 1 0 0 1

0 1 0 0 0

--------

0 0 4 5 6

1 2 3 0 7

2 0 4 0 8

3 0 0 10 9

4 0 12 11 0

5 0 13 12 13

maze.in檔案內容:

Go語言 廣度優先演算法(走迷宮)

前言 最近在慕課網看了個視屏學習廣度優先演算法,通過這個演算法來計算出走出迷宮的最短路徑,因此在此記錄來加深自己對廣度優先演算法的理解。目錄一 什麼是廣度優先演算法?廣度優先演算法能做什麼?二 實現 三 最終結果 廣度優先演算法 breadth first search 同廣度優先搜尋,又稱作寬度優...

迷宮 BFS 廣度優先搜尋

小c最近在研究機械人,他想看看自己的機械人夠不夠智慧型,於是他將機械人放在乙個n m的迷宮中,看看機械人能不能在最短的時間內到達目的地,可是小c不知道最短的時間是多少,現在請你幫他算算機械人到達目的地的最短時間是多少?輸入描述 輸入資料第一行兩個整數n和m。n和m的範圍 10,500 接下來n行,每...

go 廣度搜尋案例(迷宮)

1 package main23 import 4 fmt 5 os 6 78 9 將文件結構讀入到切片中 二維陣列 10 row,col 行數 列數 文件第一行資料 11 fmt.fscanf 逐一字元讀取 遇到換行返回值為0 fscan 遇到換行視為空白 12 13 14 func readma...