你有一張某海域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
using
namespace std;
int n;
vectorchar
>>
area
(10000
,vector<
char
>
(10000))
;bool flag;
int cnt=0;
int d[4]
[2]=
,,,}
;int ans=0;
//被淹沒後的島嶼個數
int res_ans=0;
//沒被淹沒的島嶼個數
void
dfs(
int x,
int y)
// coutif(area[x]
[y]!=
'#')
return;if
(x>=n||x<
0||y>=n||y<0)
return;if
(flag==
false)if
(cnt==4)
} area[x]
[y]=
'*';
for(
int i=
0;i<
4;i++)}
intmain()
}for
(int i=
0;i)// cout} cout<}
2018藍橋杯省賽B組 9 全球變暖
你有一張某海域nxn畫素的 表示海洋 表示陸地,如下所示 其中 上下左右 四個方向上連在一起的一片陸地組成一座島嶼。例如上圖就有2座島嶼。由於全球變暖導致了海面上公升,科學家 未來幾十年,島嶼邊緣乙個畫素的範圍會被海水淹沒。具體來說如果一塊陸地畫素與海洋相鄰 上下左右四個相鄰畫素中有海洋 它就會被淹...
2023年藍橋杯省賽B組 明碼
2018年藍橋杯省賽b組 明碼 題目就不複製了,大概就是,給了你10行資料,每行32個數。要求將這些資料轉化成二進位制,即明碼,每一行資料排列成16 16,即可以看到乙個漢字。其實excel也可以做,但是數字需要自己敲上去就有點麻煩 include inter int n 轉換成二進位制 intb ...
2023年藍橋杯C C 組B組第二題
include includeint a 30 int fun1 int num for int j last printf n if getasynckeystate 48 sum if j 29 if go 0 if k 27 a k 0 else if go 1 else if go 2 把剩...