藍橋杯 2018初賽 全球變暖 dfs

2021-10-24 09:37:21 字數 1411 閱讀 3938

傳送門

你有一張某海域nxn畫素的**,".「表示海洋、」#"表示陸地,如下所示:

其中"上下左右"四個方向上連在一起的一片陸地組成一座島嶼。例如上圖就有2座島嶼。

由於全球變暖導致了海面上公升,科學家**未來幾十年,島嶼邊緣乙個畫素的範圍會被海水淹沒。

具體來說如果一塊陸地畫素與海洋相鄰(上下左右四個相鄰畫素中有海洋),它就會被淹沒。

例如上圖中的海域未來會變成如下樣子:

請你計算:依照科學家的**,**中有多少島嶼會被完全淹沒。

第一行包含乙個整數n。 (1 <= n <= 1000)

以下n行n列代表一張海域**。

**保證第1行、第1列、第n行、第n列的畫素都是海洋。

乙個整數表示答案。

樣例輸入

樣例輸出

1

【解題思路】

1.dfs可以算出有多少個島嶼,但是會改便原來的圖形,所以整個圖存兩遍。

2.每次遍歷某個島的時候看看這個到有沒有倖存的「#」,用vis記錄下來

3.最後湮滅島的數量=總島數-湮滅島數。

#include

#define ll long long

using

namespace std;

string a[

1002];

//修改,就可以計算有多少島嶼

string b[

1002];

//島嶼上是否有沒有被淹掉的小島

int n;

int vis[

1002];

int dx[5]

=;int dy[5]

=;void

dfs(

int x,

int y,

int c)}}

if(f==1)

vis[c]=1

;for

(int i=

0;i<

4;i++)}

return;}

intmain()

int cnt=0;

for(

int i=

0;i}int ans=0;

for(

int i=

0;i) cout<

}

藍橋杯2018初賽 全球變暖

題目描述 你有一張某海域nxn畫素的 表示海洋 表示陸地,如下所示 其中 上下左右 四個方向上連在一起的一片陸地組成一座島嶼。例如上圖就有2座島嶼。由於全球變暖導致了海面上公升,科學家 未來幾十年,島嶼邊緣乙個畫素的範圍會被海水淹沒。具體來說如果一塊陸地畫素與海洋相鄰 上下左右四個相鄰畫素中有海洋 ...

藍橋杯2018初賽 全球變暖

題目描述 你有一張某海域nxn畫素的 表示海洋 表示陸地,如下所示 其中 上下左右 四個方向上連在一起的一片陸地組成一座島嶼。例如上圖就有2座島嶼。由於全球變暖導致了海面上公升,科學家 未來幾十年,島嶼邊緣乙個畫素的範圍會被海水淹沒。具體來說如果一塊陸地畫素與海洋相鄰 上下左右四個相鄰畫素中有海洋 ...

藍橋杯2018初賽 全球變暖

題目描述 你有一張某海域nxn畫素的 表示海洋 表示陸地,如下所示 其中 上下左右 四個方向上連在一起的一片陸地組成一座島嶼。例如上圖就有2座島嶼。由於全球變暖導致了海面上公升,科學家 未來幾十年,島嶼邊緣乙個畫素的範圍會被海水淹沒。具體來說如果一塊陸地畫素與海洋相鄰 上下左右四個相鄰畫素中有海洋 ...