这两个算法的用处在于,只要给定一个连通图,从连通图的任何一点开始遍历,都可以把整个连通图遍历完。
解析一道头条的笔试题
题目
案例
区块数目 : 3
算法思路:
1.构建连通图
遍历每个节点A,添加节点A与右方和下方的连通节点的有向边。
2.dfs或者bfs遍历
对所有节点的vis状态设置为false,一旦被遍历则置为true,true的节点不可再访问
3.根据遍历的次数来获得区块数目
对所有节点顺序进行dfs或者bfs,完成一次dfs/bfs就count++
Golang实现 bfs算法思路
import (
"fmt"
)
func seq(i, j, M int) int {
return i*M + j
}
func main() {
N := 0
M := 0
fmt.Scan(&N, &M)
matrix := make([][]int, 0)
for i := 0; i < N; i++ {
temp := make([]int, 0)
for j := 0; j < M; j++ {
ai := 0
fmt.Sc