1package
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或...