你有一張某海域nxn畫素的**,」.」表示海洋、」#」表示陸地,如下所示:
……..##….
.##….
….##.
…####.
…###.
…….其中」上下左右」四個方向上連在一起的一片陸地組成一座島嶼。例如上圖就有2座島嶼。
由於全球變暖導致了海面上公升,科學家**未來幾十年,島嶼邊緣乙個畫素的範圍會被海水淹沒。具體來說如果一塊陸地畫素與海洋相鄰(上下左右四個相鄰畫素中有海洋),它就會被淹沒。
例如上圖中的海域未來會變成如下樣子:
…….…….
…….…….
….#…
…….…….
請你計算:依照科學家的**,**中有多少島嶼會被完全淹沒。
【輸入格式】
第一行包含乙個整數n。 (1 <= n <= 1000)
以下n行n列代表一張海域**。
**保證第1行、第1列、第n行、第n列的畫素都是海洋。
【輸出格式】
乙個整數表示答案。
【輸入樣例】
7…….
.##….
.##….
….##.
…####.
…###.
…….【輸出樣例】
1【輸入樣例】10…
.###…###.
.###…###.
.########.
….###…#…
.#.#…#…
.###………
【輸出樣例】
2資源約定:
峰值記憶體消耗(含虛擬機器) < 256m
cpu消耗 < 1000ms
運用dfs先求出原先的海島數量sum1,然後找出四周都有#的#的島嶼,求出其數量sum2。
用原始島嶼數減去得到sum=sum1-sum2。
具體**如下:
#include#includeusing namespace std;
#include//這個思路就是求哪個島嶼有四周都是#的#,然後剩下的島嶼就是被淹沒的數量(完全被浸染的數量)
char map[101][101];
char map1[101][101];
int move[4][2]=;
int ans[110]=;
int vis[101][101]=; //未被訪問標記為0
void dfs(int x,int y,int n) //求總的島嶼數
;int aa[5]; //儲存五個數
int vis[5]=; //標記
int move[4]=; //上下左右四個方向
/* 1 2 3 4
6 7 8 9
11 12 13 14
*///因為4+1 9+1不能連上
**如下:
//方格分割(分成完全一樣的兩部分)問有多少中分法
#include#include#includeusing namespace std;
int str[8][8];
int move[4][2]=,,,};//上下左右四個方向
int sum=0;
int vis[8][8]=;
void dfs(int r,int c) //以(r,c)為起點開始回溯
for(int i=0;i<4;i++)
} }int main()
20190716 被水題淹沒
上午7點到8點和午後一小時,是烹製oier的最好時刻。因為這時oier放鬆而疲憊,肉質鬆軟,適合烤製。用上等香料醃製,果木炭烤,佐以孜然 辣椒,色澤金黃,外酥裡嫩的蒟蒻,成為當地招待來賓,歡慶佳節的首選。完戲,考試炸了,話說這考試頻繁的要命。後來 考完 我才發現,這不是模擬題,而是 noip2016...
HNACM 七 B 海島爭霸
神秘的海洋,驚險的探險之路,打撈海底寶藏,激烈的海戰,海盜劫富等等。加勒比海盜,你知道吧?傑克船長駕駛著自己的的戰船黑珍珠1號要征服各個海島的海盜,最後成為海盜王。這是乙個由海洋 島嶼和海盜組成的危險世界。傑克船長準備從自己所占領的島嶼a開始征程,逐個去占領每乙個島嶼。面對危險重重的海洋與詭譎的對手...
8 22 問題 B 海島爭霸
神秘的海洋,驚險的探險之路,打撈海底寶藏,激烈的海戰,海盜劫富等等。加勒比海盜,你知道吧?傑克船長駕駛著自己的的戰船黑珍珠1號要征服各個海島的海盜,最後成為海盜王。這是乙個由海洋 島嶼和海盜組成的危險世界。傑克船長準備從自己所占領的島嶼a開始征程,逐個去占領每乙個島嶼。面對危險重重的海洋與詭譎的對手...