Go複習筆記5 實現廣度優先

2021-09-21 13:06:01 字數 1577 閱讀 2008

廣度優先演算法

為爬蟲做好準備,爬蟲內部真正的核心就是乙個bfs

應用廣泛,綜合性強

面試常見

bfs用佇列實現。

廣度優先搜尋走迷宮:

用迴圈建立二維slice,(一直是這個了)

使用slice來實現佇列,(這個可以借鑑,不是非得用容器的)

使用fscanf讀取檔案

對point的抽象

6 5

0 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

**:

package main

import

("fmt"

"os"

)func

readmaze

(filename string)[

][]int

defer file.

close()

fmt.

fscanf

(file,

"%d %d"

,&row,

&col)

maze:=

make([

][]int

,row)

for i:=

range maze

}return maze

}type point struct

var dirs =[4

]point ,,

,,}func

(p point)

add(r point)point

}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 que:=

point

forlen

(que)

>

0for

_,dir:=

range dirs

val,ok=next.

at(steps)

//已經走過了

if!ok||val!=

0if next ==start

cursteps,

_:=cur.

at(steps)

steps[next.i]

[next.j]

=cursteps+

1 que=

(que, next)}}

return steps

}func

main()

,point

) fmt.

println

(steps)

}

廣度優先搜尋演算法(go)

廣度優先搜尋演算法 breadth first search,縮寫為bfs 又譯作寬度優先搜尋,或橫向優先搜尋,是一種圖形搜尋演算法。簡單的說,廣度優先搜尋演算法是從根節點開始,沿著樹的寬度遍歷樹的節點。如果所有節點均被訪問,則演算法中止。借助廣度優先搜尋演算法,可以讓你找出兩樣東西之間的最短距離。...

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

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

廣度優先搜尋(BFS) Python實現

演算法的工作原理 建立乙個佇列,用於儲存要檢查的人 從佇列中彈出乙個人 檢查這個人是否被檢查過 檢查這個人是否為芒果經銷商 是 大功告成 否 將這個人的所有鄰居都加入到佇列中 回到第二步 如果隊列為空,就說明沒有找到芒果經銷商 encoding utf 8 from collections impo...