山峰和山谷 Flood Fill

2021-10-08 19:49:46 字數 1233 閱讀 5403

fgd小朋友特別喜歡爬山,在爬山的時候他就在研究山峰和山谷。

為了能夠對旅程有乙個安排,他想知道山峰和山谷的數量。

給定乙個地圖,為fgd想要旅行的區域,地圖被分為 n×n 的網格,每個格仔 (i,j) 的高度 w(i,j) 是給定的。

若兩個格仔有公共頂點,那麼它們就是相鄰的格仔,如與 (i,j) 相鄰的格仔有(i−1,j−1),(i−1,j),(i−1,j+1),(i,j−1),(i,j+1),(i+1,j−1),(i+1,j),(i+1,j+1)。

我們定義乙個格仔的集合 s 為山峰(山谷)當且僅當:

s 的所有格仔都有相同的高度。

s 的所有格仔都連通。

對於 s 屬於 s,與 s 相鄰的 s′ 不屬於 s,都有 ws>ws′(山峰),或者 ws典型的flood fill題目,用bfs解決

#include

using

namespace std;

const

int n =

1010

;int n;

int g[n]

[n];

bool st[n]

[n];

intbfs

(int sx,

int sy)

;int dy=

; queueint,

int>>q;

q.push()

; st[sx]

[sy]

=true

;int high =10;

//既是山峰又是山谷

while

(q.size()

)else

if(g[xx]

[yy]

> g[t.first]

[t.second]

)//山谷條件

elseif(

!st[xx]

[yy]))

; st[xx]

[yy]

=true;}

}}return high;

}int

main()

int valley =

0, peak =0;

for(

int i =

1; i <= n; i++)}

} cout << peak <<

' '<< valley << endl;

return0;

}

Flood Fill 山峰和山谷

fgd小朋友特別喜歡爬山,在爬山的時候他就在研究山峰和山谷。為了能夠對旅程有乙個安排,他想知道山峰和山谷的數量。給定乙個地圖,為fgd想要旅行的區域,地圖被分為 n n 的網格,每個格仔 i,j 的高度 w i,j 是給定的。若兩個格仔有公共頂點,那麼它們就是相鄰的格仔,如與 i,j 相鄰的格仔有 ...

山峰和山谷 Flood Fill

fgd小朋友特別喜歡爬山,在爬山的時候他就在研究山峰和山谷。為了能夠對旅程有乙個安排,他想知道山峰和山谷的數量。給定乙個地圖,為fgd想要旅行的區域,地圖被分為 n nn n 的網格,每個格仔 i,j i,j 的高度 w i,j w i,j 是給定的。若兩個格仔有公共頂點,那麼它們就是相鄰的格仔,如...

1454 山峰和山谷

時間限制 1000 ms 記憶體限制 65536 kb 提交數 93 通過數 28 給定乙個 n n 的網格狀地圖,每個方格 i,j 有乙個高度 wij 如果兩個方格有公共頂點,則它們是相鄰的。定義山峰和山谷如下 均由地圖上的乙個連通塊組成 所有方格高度都相同 周圍的方格 即不屬於山峰或山谷但與山峰...