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