藍橋杯 第九屆c語言省賽A組 全球變暖

2021-09-13 12:43:17 字數 1341 閱讀 3821

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

….##…

.##…

…##.

…####.

…###.

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

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

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

………#……

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

【輸入格式】

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

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

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

【輸出格式】

乙個整數表示答案。

【輸入樣例】7…

.##…

.##…

…##.

…####.

…###.

…【輸出樣例】

資源約定:

峰值記憶體消耗(含虛擬機器) < 256m

cpu消耗 < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入…」 的多餘內容。

注意:main函式需要返回0;

只使用ansi c/ansi c++ 標準;

不要呼叫依賴於編譯環境或作業系統的特殊函式。

所有依賴的函式必須明確地在原始檔中 #include

不能通過工程設定而省略常用標頭檔案。

題解:做這個題的時候,感覺就是個深搜求兩次連通分量,相減就可以,直到看到大牛的題解才發現,自己想的是如此的狹隘

具體見:

在這裡貼一下大牛的**

#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#define n 1000

char a[n][n];

int n,vis[n][n],dir[4][2]=,,,};

struct point};

int bfs(int x,int y)

}} if(cnt==4)

left++;

} return left;}

int main()

memset(vis,0,sizeof(vis));

for(i=0;i}

} cout

}

第九屆藍橋杯省賽(9) 全球變暖

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

全球變暖 第九屆藍橋杯省賽題目九

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

2018藍橋杯第九屆C 語言A組省賽大題題解

為了準備下次比賽 2019a組c 這裡只寫了大題的題解。一部分原因也是因為要考研,時間不太夠 對於下次比賽很有信心,因為看了下大題基本會做。想起去年看這些題還要思考很久就感慨萬分啊,當時以為自己智商不過,哪知道系統的學過演算法後能提公升這麼多思維。所以有的看演算法題崩潰的道友們不要擔心,慢慢學總是學...