廣度優先搜尋(BFS)

2021-08-05 19:23:59 字數 1073 閱讀 9981

題目:

給出乙個m x n的矩陣,矩陣中的元素為0或1。稱位置(x, y)與其上下左右四個位置(x, y+1)、(x, y-1)、(x+1, y)、(x-1, y)是相鄰的。 如果矩陣中有若干個1是相鄰的(不必兩兩相鄰),那麼稱這些1構成了乙個「塊」。求給定矩陣中「塊」的個數。

0   1   1   1   0   0   1

0   0   1   0   0   0   0

0   0   0   0   1   0   0

0   0   0   1   1   1   0

1   1   1   0   1   0   0

1   1   1   1   0   0   0

例如上面的6x7的矩陣中,「塊」的個數為4。

題解:

#include #include using namespace std;

const int maxn = 100;

struct node node;

int n, m; //矩陣大小為n*m

int matrix[maxn][maxn]; //01矩陣

bool inq[maxn][maxn] = ; //記錄位置(x, y)是否已入過隊

int x[4] = ; //增量陣列

int y[4] = ;

/***判斷位置(x, y)是否需要訪問****/

bool judge(int x, int y)

if(matrix[x][y] == 0 || inq[x][y] == true)

return true;

} /***bfs函式訪問位置(x, y)所在的塊,將該塊中所有的1的inq都設定為true****/

void bfs(int x, int y)

} }}int main()

} int ans = 0;

for(int x = 0; x < n; x++)

} }printf("%d\n", ans);

return 0;

}

BFS廣度優先搜尋

廣度優先搜尋,利用佇列實現,結束標誌是隊列為空的時候 承接dfs的演算法實現的講例,對於迷宮問題我們也可以採取廣度優先搜尋實現 include iostream include cstdio include cstdlib using namespace std int map 55 55 int ...

bfs廣度優先搜尋

這一課我們來學習圖的另一種遍歷方法 廣度優先搜尋 breadth first search,簡稱 bfs 這是一種連通圖的常用遍歷策略,通常用於求起點到各點的最短路徑,以及求兩點之間的最優路徑等問題。首先我們先來看看廣度優先搜尋的具體方法吧 對於乙個連通圖,我們假設一開始所有頂點均未被訪問,廣度優先...

廣度優先搜尋bfs

bfs即廣度優先搜尋演算法,其是搜尋演算法中的一種。1.dfs常用於尋找是否存在解 其從a節點出發,選取乙個臨近點b,然後不斷深入,在搜尋完b的下屬節點 ehif 後,回到a再搜尋臨近a的c節點,以此類推。2.bfs則用於在最短的時間或最少的移動距離內找到解 其往往從a節點出發,搜尋周圍所有的圍繞節...