2018藍橋杯省賽 B組C 第9題 搜尋

2021-08-18 01:22:29 字數 2036 閱讀 4683

題目分享鏈結

密碼:7m4a

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

…….

.##….

.##….

….##.

..####.

…###.

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

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

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

…….

…….

…….

…….

….#..

…….

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

【輸入格式】

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

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

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

【輸出格式】

乙個整數表示答案。

【輸入樣例】

7 …….

.##….

.##….

….##.

..####.

…###.

…….

【輸出樣例】

1 資源約定:

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

cpu消耗 < 1000ms

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

注意:

main函式需要返回0;

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

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

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

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

提交程式時,注意選擇所期望的語言型別和編譯器型別。

比賽的時候是,bfs便利每個島嶼,用乙個變數記錄不會被淹沒的島嶼數量,然後用總島嶼數量減去不會被淹沒的島嶼數量。就是被淹沒島嶼的數量。

比賽時,沒考慮。

這種情況,不過發現自己的**可以通過,真是僥倖。不過下來,我聽到別人的做法是用bfs統計島嶼數量,然後迴圈把島嶼淹沒,最後再統計剩下的島嶼數量。這樣的做法,就通不過這組樣例了。

下面時我新寫的**:

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int max = 1010;

typedef pair p;

char map[max][max];

bool used[max][max];

const

int xx = ;

const

int yy = ;

int n;

bool bfs(int x,int y)

else

if(map[tx][ty] == '.')

}if(canflood) floodcount++;

}if(floodcount == sumcount)

return

true;

else

return

false;

}void solve()}}

cout

<< res << endl;

}int main(void)

}solve();

return

0;}

感覺今年不是暴力杯啊。。

2018藍橋杯省賽B組 9 全球變暖

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

藍橋杯2015省賽B組第2題

2.星系炸彈 在x星系的廣袤空間中漂浮著許多x星人造 炸彈 用來作為宇宙中的路標。每個炸彈都可以設定多少天之後 比如 阿爾法炸彈2015年1月1日放置,定時為15天,則它在2015年1月16日 有乙個貝塔炸彈,2014年11月9日放置,定時為1000天,請你計算它 的準確日期。請填寫該日期,格式為 ...

2018 藍橋杯省賽 B 組模擬賽(一)

給你乙個序列,請你在其中求出一段最長嚴格上公升的部分,它不一定要連續。include includeusing namespace std int f 10000 b 10000 int lis int n res max res,f i return res 1 int main printf d...