演算法筆記 BFS

2021-10-03 18:28:33 字數 1087 閱讀 1498

這個是題目:相當於就是輸入乙個只有01的矩陣,求其中1的塊數

思路:這道題其實也就是求連通塊的問題,只要乙個位置的上下左右中存在乙個1那就可以連通到一起,是bfs經典的題目

#include

#include

//#include

#include

#include

using namespace std;

//這裡需要建立乙個結構體 在bfs中能用到

struct nodenode;

int n,m;

//對應陣列的行和列

//bfs

//前期準備就是,需要乙個01矩陣,兩個增量陣列,乙個判斷是否訪問過的訪問陣列

int jv[

100]

[100]=

;bool flag[

1000][

1000]=

;//預設是沒有訪問過

int xx[4]

=;int yy[4]

=;//用來for迴圈的,分別對應四個位置

//需要寫乙個方法來判斷當前位置需不需要訪問

bool judge

(int x,

int y)

return true;

}//開始寫bfs,首先是需要有乙個佇列,其次便是不需要遞迴

void

bfs(

int x,

int y)}}

}int

main()

}printf

("%d\n"

,jv[0]

[0])

;int sum=0;

//用來記錄最後的值

//就是開始遍歷,從第乙個等於1的地方開始,sum++,然後深度遍歷其他地方

for(i=

0;i}printf

("%d\n"

,sum)

;return0;

}

演算法筆記之DFS與 BFS

基本思想 深度優先搜尋 dfs,depth first search 它從某個狀態開始,不斷的轉移狀態直到無法轉移狀態,然後回退到前一步的狀態,繼續轉移到其它狀態,如此不繼重複,直至找到最終的解。寬度優先搜尋 bfs,breadth first search 總是先搜尋距離初始狀態近的狀態,也就是說...

演算法筆記 8 2 廣度優先搜尋BFS

三 相關例題 這次我們改變尋路策略,不知要找出路線,而且想知道從起點到終點的最短步數是多少 兩個相鄰節點間看作相隔一步 我們可以按如下的圖示進行寬度優先搜尋 起點a是第一層,發現從a出發能訪問到b和c,於是b c是第二層 按順序訪問第二層,先看b。從b出發能訪問到d和e,於是d e是第三層,等第二層...

BFS演算法框架

bfs演算法框架 bfs的核心思想,就是把一些問題抽象成圖,從乙個節點開始,向四周擴散。一般來說,寫bfs都是用 佇列 這個資料結構,每次將乙個節點周圍的節點加入到隊尾。先舉例 下 bfs 出現的常 場景好吧,問題的本質就是讓你在 幅 圖 中找到從起點 start 到終點 target 的最近距離,...