校園裡有一些小河和一些湖泊,現在,我們把它們通一看成水池,假設有一張我們學校的某處的地圖,這個地圖上僅標識了此處是否是水池,現在,你的任務來了,請用計算機算出該地圖中共有幾個水池。
輸入第一行輸入乙個整數n,表示共有n組測試資料
每一組資料都是先輸入該地圖的行數n(0輸出
輸出該地圖中水池的個數。
要注意,每個水池的旁邊(上下左右四個位置)如果還是水池的話的話,它們可以看做是同乙個水池。
本題不管是深度搜尋還是寬度搜尋都能夠完成,重點是在於搜尋套路與細節處理,此處我應用的是深度搜尋
#include#includeusing namespace std;
#define endl '\n'
using ll=long long;
const size_t maxn = 101;
int a[maxn][maxn], book[maxn][maxn];//定義要檢索的圖(二維陣列a),和標記陣列book保證每個元素不被重複訪問
int fx[4][2] = ,,,
};//定義方向陣列,可移動的方位上下左右
void dfs(int x, int y)
}//深搜
int count()
}return area;
}
int main()
}int c = count();//輸出所標記區域數即水池數目
cout << c << endl;
}return 0;
}
牢記深度搜尋
的套路
認真把握過程的細節
不斷檢測
自己的**
比對同一題深搜與寬搜的區別
深度搜尋 NYOJ42 水池數目
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 南陽理工學院校園裡有一些小河和一些湖泊,現在,我們把它們通一看成水池,假設有一張我們學校的某處的地圖,這個地圖上僅標識了此處是否是水池,現在,你的任務來了,請用計算機算出該地圖中共有幾個水池。輸入第一行輸入乙個整數n,表示共有n...
水池數目 C 寬度搜尋 佇列 遞迴
校園裡有一些小河和一些湖泊,現在,我們把它們通一看成水池,假設有一張我們學校的某處的地圖,這個地圖上僅標識了此處是否是水池,現在,你的任務來了,請用計算機算出該地圖中共有幾個水池。輸入第一行輸入乙個整數n,表示共有n組測試資料 每一組資料都是先輸入該地圖的行數n 0輸出 輸出該地圖中水池的個數。要注...
DFS(深度優先搜尋) (C )
1 演算法用途 用於遍歷圖中的節點,有些類似於樹的深度優先遍歷。這裡唯一的問題是,與樹不同,圖形可能包含迴圈,因此我們可能會再次來到同一節點。2 基本思想 深度優先遍歷圖的方法是,從圖中某頂點v出發 1 訪問頂點v 2 依次從v的未被訪問的鄰接點出發,對圖進行深度優先遍歷 直至圖中和v有路徑相通的頂...