NYOJ 水池數目(DFS)

2021-07-30 05:00:57 字數 1089 閱讀 1744

描述:

校園裡有一些小河和一些湖泊,現在,我們把它們通一看成水池,假設有一張我們學校的某處的地圖,這個地圖上僅標識了此處是否是水池,現在,你的任務來了,請用計算機算出該地圖中共有幾個水池。

輸入:

第一行輸入乙個整數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,表...