BFS 求連通塊的數目

2021-10-03 02:49:17 字數 674 閱讀 8799

有一間長方形的房子,地上鋪了紅色、黑色兩種顏色的正方形瓷磚。

你站在其中一塊黑色的瓷磚上,只能向相鄰(上下左右四個方向)的黑色瓷磚移動。

請寫乙個程式,計算你總共能夠到達多少塊黑色的瓷磚。

分析:1.特點是把從起點出發能到達的點全部放入佇列中,每個點只能入隊一次,出隊的時候將數目加一。就可以統計所有點連通的最大數目了。

2.使用陣列來模擬佇列需要注意陣列的大小為n*n,hh=0,tt=0  while(hh<=tt){}.

**:

#include #include #include using namespace std;

const int n=30;

#define x first

#define y second

typedef pairpii;

char g[n][n];

bool st[n][n];

pii q[n*n];

int res; //記錄連通塊的數目

int n,m;

int dx[4]=,dy[4]=;

void bfs(int sx,int sy)

; while(hh<=tt);}

}}int main()

cout<}

return 0;

}

NYOJ 水池數目(連通塊)

通過這題學習到求連通區塊的乙個很簡單的方法 記下來備查 該題的意思就是求有幾個互不相連的水池 水池與水池連在一起還是乙個水池 ac 如下 includeusing namespace std int map 105 105 void dfs int i,int j if map i j 1 if m...

dfs求連通塊

遞迴是什麼?絕大部分人都會說 自己呼叫自己,剛開始我也是這樣理解遞迴的。確實沒錯,遞迴的確是自己呼叫自己。遞迴簡單的應用 編寫乙個能計算斐波那契數列的函式,也就是這樣 int fac int n 相信絕大部分人都能看懂這段 遞迴除了可以用自己呼叫自己這樣描述之外,還可以這樣表示遞迴函式 遞推式 邊界...

BFS寬搜模板(求矩陣中連通塊的個數)

給出乙個n m的矩陣,元素為0或1.稱每個位置的上下左右與之相鄰。如果矩陣中有若干個1是相鄰的,那麼這些1就構成了乙個塊。求矩陣中 塊 的個數。include include include include include include using namespace std typedef lo...