題目描述
南陽理工學院校園裡有一些小河和一些湖泊,現在,我們把它們通一看成水池,假設有一張我們學校的某處的地圖,這個地圖上僅標識了此處是否是水池,現在,你的任務來了,請用計算機算出該地圖中共有幾個水池。
輸入第一行輸入乙個整數n,表示共有n組測試資料
每一組資料都是先輸入該地圖的行數m(0輸出
輸出該地圖中水池的個數。
要注意,每個水池的旁邊(上下左右四個位置)如果還是水池的話的話,它們可以看做是同乙個水池。
樣例輸入
2
3 41 0 0 0
0 0 1 1
1 1 1 0
5 51 1 1 1 0
0 0 1 0 1
0 0 0 0 0
1 1 1 0 0
0 0 1 1 1
樣例輸出
2
3
分析:這是一道很經典的連通塊問題,運用廣度優先搜尋,遇到1就將對應座標放入佇列,並將此點標記已搜尋,取出此點座標後對此點進行四個方向搜尋 ,遇到1後將對應座標放入佇列並重複之前的操作直到隊列為空。此時一整塊就算統計完了,數量+1.再去其他未標記的點進行搜尋。
相似問題 :(uva 572)oil deposits(bfs)
#include#include#include#includeusing namespace std;
const int m=1e2+5;
int map[m][m];
int vis[m][m],sum=0;
void bfs(int x,int y)
if(map[x1-1][y1]==1&&vis[x1-1][y1]==0)
if(map[x1][y1+1]==1&&vis[x1][y1+1]==0)
if(map[x1][y1-1]==1&&vis[x1][y1-1]==0)
}sum++;
}int main()
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
}printf("%d\n",sum);
}}
NYOJ 水池數目(DFS)
描述 校園裡有一些小河和一些湖泊,現在,我們把它們通一看成水池,假設有一張我們學校的某處的地圖,這個地圖上僅標識了此處是否是水池,現在,你的任務來了,請用計算機算出該地圖中共有幾個水池。輸入 第一行輸入乙個整數n,表示共有n組測試資料 每一組資料都是先輸入該地圖的行數m 0 m 100 與列數n 0...
NYOJ 27 水池數目
includeint n int map 101 101 int row,col int der 4 2 用二維陣列記錄四個方向 void count int x,int y int main for i 0 i row i for j 0 j col j 判斷不為0 的點 printf d n n...
nyoj27水池數目
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 南陽理工學院校園裡有一些小河和一些湖泊,現在,我們把它們通一看成水池,假設有一張我們學校的某處的地圖,這個地圖上僅標識了此處是否是水池,現在,你的任務來了,請用計算機算出該地圖中共有幾個水池。輸入第一行輸入乙個整數n,表示共有n...