小明是乙個地質調查員,在他調查的地方突然出現個泉眼。由於當地的地勢不均勻,有高有低,他覺得這意味著這裡在不久的將來將會乙個小湖。水往低處流,凡是比泉眼地勢低或者等於的地方都會被水淹沒,地勢高的地方水不會越過。而且又因為泉水比較弱,當所有地勢低的地方被淹沒後,水位將不會**,一直定在跟泉眼一樣的水位上。現在給出小明掌握的地圖,所有的地圖都是乙個矩形,並按照座標系分成了乙個個小方格,小明測量除了每個方格的具體高度。我們假定當水留到地圖邊界時,不會留出地圖外,現在他想通過這些資料分析出,將來這裡將會出現乙個多大面積的湖。
有若干組資料,每組資料的第一行有四個整數n,m,p1,p2(0輸出對應地圖中會有多少個格仔被水充滿。
3 5 2 3
3 4 1 5 1
2 3 3 4 7
4 1 4 1 1
此題可以用dfs(深度優先演算法)來解決,從泉眼位置出發分別向上,下,左,右四個方向進行遞迴,找到的位置如果高度小於泉眼的高度,那麼它就能夠被充滿,如果高度高於泉眼位置,則不能夠被充滿。
#include
using
namespace std;
int map[
100]
[100];
int n,m,sum =
0,center =0;
//sum記錄被填滿格仔的數量,center表示泉眼高度
void
find
(int x,
int y)
intmain()
} center = map[p1]
[p2]
;find
(p1,p2)
; cout
}
演算法題 地質調查 BFS
小明是乙個地質調查員,在他調查的地方突然出現個泉眼。由於當地的地勢不均勻,有高有低,他覺得這意味著這裡在不久的將來將會乙個小湖。水往低處流,凡是比泉眼地勢低或者等於的地方都會被水淹沒,地勢高的地方水不會越過。而且又因為泉水比較弱,當所有地勢低的地方被淹沒後,水位將不會 一直定在跟泉眼一樣的水位上。現...
備戰藍橋 the first question
問題描述 考慮如下的序列生成演算法 從整數 n 開始,如果 n 是偶數,把它除以 2 如果 n 是奇數,把它乘 3 加1。用新得到的值重複上述步驟,直到 n 1 時停止。例如,n 22 時該演算法生成的序列是 22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1 人們...
備戰藍橋 the third question
問題描述 x星球居民小區的樓房全是一樣的,並且按矩陣樣式排列。其樓房的編號為1,2,3.當排滿一行時,從下一行相鄰的樓往反方向排號。比如 當小區排號寬度為6時,開始情形如下 1 2 3 4 5 6 12 11 10 9 8 7 13 14 15 我們的問題是 已知了兩個樓號m和n,需要求出它們之間的...