go 廣度搜尋案例(迷宮)

2022-06-15 20:06:17 字數 1791 閱讀 6252

1

package

main23

import

(4 "fmt"

5 "os"6)

78/*9

*將文件結構讀入到切片中(二維陣列)

10*row, col 行數 列數 (文件第一行資料)

11*fmt.fscanf 逐一字元讀取 (遇到換行返回值為0)***fscan(遇到換行視為空白)***12*

13*/

14 func readmaze(filename string) int

1920 var row, col int

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

2223 maze := make(int

, row)

24for i :=range maze 29}

3031

return

maze32}

3334

//定義點位

35type point struct

3839

//運算的座標點左、下、右、上

40 var dirs = [4]point, , , }

4142

//運算

43func (p point) add(r point) point 45}

4647

//檢查座標點是否超出範圍

48 func (p point) at(grid int) (int

, bool)

5253

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

5657

return grid[p.i][p.j], true58}

5960

/**61

*行走實現路線

62*1、新建切片陣列 記錄總行和列數 填充步數63*

64*65*

66**/67 func walk(maze int, start, end point) int

7273 q :=point

7475

for len(q) > 0

82//

排除走過的不能走的

83for _, dir :=range dirs

9091 val, ok =next.at(steps)

92if !ok || val != 0

9596

if next ==start

99100 cursteps, _ :=cur.at(steps)

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

102104

}105

}106

107return

steps

108}

109110

func main() , point)

115116

for _, row :=range steps

120fmt.println()

121}

122123

//todo: construct path from steps

124 }

maze.in

6 50 1 0 0 0

0 0 0 1 0

0 1 0 1 0

1 1 1 0 0

0 1 0 0 1

0 1 0 0 0

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

自主學習 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...

迷宮plus(廣度搜尋)

題意思路 明顯這是一道搜尋題,因為是找最短路徑而不是有多少條路,故而應是廣搜。include include include includeusing namespace std int map 100 100 建立地圖 int vis 100 100 標記是否走過 int n,m int sf 4...

廣度搜尋 01迷宮

有乙個僅由數字0與1組成的n n格迷宮。若你位於一格0上,那麼你可以移動到相鄰4格中的某一格1上,同樣若你位於一格1上,那麼你可以移動到相鄰4格中的某一格0上。你的任務是 對於給定的迷宮,詢問從某一格開始能移動到多少個格仔 包含自身 第1行為兩個正整數n,m。下面n行,每行n個字元,字元只可能是0或...