2018藍橋杯 全球變暖(dfs)

2022-05-15 08:46:17 字數 1226 閱讀 2947

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

.......

.##....

.##....

....##.

..####.

...###.

.......

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

由於全球變暖導致了海面上公升,科學家**未來幾十年,島嶼邊緣乙個畫素的範圍會被海水淹沒。具體來說如果一塊陸地畫素與海洋相鄰(上下左右四個相鄰畫素中有海洋),它就會被淹沒。  

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

.......

.......

.......

.......

....#..

.......

.......

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

【輸入格式】

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

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

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

【輸出格式】

乙個整數表示答案

比較害怕這種問題,所以沒敢寫。

困惑點:

1 如何判斷有幾個島嶼?想用dfs判斷,做多遍dfs。這個思路是對的,其實我們用兩個for迴圈搜尋第乙個未被訪問過的#, 做dfs就好。

2 怎麼把每個島嶼記錄下來?之後判斷島嶼是否會被全部淹沒。但是其實這個過程我們可以在找島嶼的過程中就進行判斷,判斷在該島嶼中是否存在乙個點#,它的四周都是#

#include#include

using

namespace

std;

int mp[110][110

];int ans[11000

];bool vis[110][110

];void dfs(int x,int y,int

k)int

main()

int len=0

;

for(int i=1;i<=n;i++)}}

int sum=0

;

for(int i=0;i)

if(ans[i]==0

) sum++;

printf(

"%d\n

",sum);

}

藍橋杯 2018初賽 全球變暖 dfs

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

藍橋杯 全球變暖 dfs

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

藍橋杯 全球變暖 (DFS)

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