描述:
校園裡有一些小河和一些湖泊,現在,我們把它們通一看成水池,假設有一張我們學校的某處的地圖,這個地圖上僅標識了此處是否是水池,現在,你的任務來了,請用計算機算出該地圖中共有幾個水池。
輸入:
第一行輸入乙個整數n,表示共有n組測試資料
每一組資料都是先輸入該地圖的行數m(0 < m < 100)與列數n(0 < n < 100),然後,輸入接下來的m行每行輸入n個數,表示此處有水還是沒水(1表示此處是水池,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
分析:
通過dfs來解決此問題,從任意的『1』開始,不停地把上下左右四個位置的部分用』0』代替。1次dfs後與初始的』1』連線的所有』1』就都被替換成』0』,這樣直到圖中不存在』1』為止。進行的dfs次數就是水池的數目了。
**如下:
#includeusing namespace std;
const int maxn = 100+5;
int p[maxn][maxn];
int r,c;
void dfs(int i,int j)
if(i+1=0&&p[i][j-1]==1)
if(j+1我這裡寫麻煩了,應該將上下左右放在乙個陣列裡進行迴圈的
int dir[4][2]=,,,};//表示上下左右四個方向
NYOJ 27 水池數目 DFS
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述南陽理工學院校園裡有一些小河和一些湖泊,現在,我們把它們通一看成水池,假設有一張我們學校的某處的地圖,這個地圖上僅標識了此處是否是水池,現在,你的任務來了,請用計算機算出該地圖中共有幾個水池。輸入第一行輸入乙個整數n,表示共有n組...
nyoj 27 水池數目(dfs)
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 南陽理工學院校園裡有一些小河和一些湖泊,現在,我們把它們通一看成水池,假設有一張我們學校的某處的地圖,這個地圖上僅標識了此處是否是水池,現在,你的任務來了,請用計算機算出該地圖中共有幾個水池。輸入第一行輸入乙個整數n,表示共有n...
nyoj27水池數目 (DFS)
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描寫敘述 南陽理工學院校園裡有一些小河和一些湖泊,如今,我們把它們通一看成水池,如果有一張我們學校的某處的地圖,這個地圖上僅標識了此處是否是水池,如今。你的任務來了。請用計算機算出該地圖中共同擁有幾個水池。輸入第一行輸入乙個整數n,表...