日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2018第九届蓝桥杯C语言第九题 全球变暖

發(fā)布時間:2024/10/14 编程问答 77 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2018第九届蓝桥杯C语言第九题 全球变暖 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

你有一張某海域NxN像素的照片,"."表示海洋、"#"表示陸地,如下所示:


.......
.##....
.##....
....##.
..####.
...###.
.......


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


由于全球變暖導(dǎo)致了海面上升,科學(xué)家預(yù)測未來幾十年,島嶼邊緣一個像素的范圍會被海水淹沒。具體來說如果一塊陸地像素與海洋相鄰(上下左右四個相鄰像素中有海洋),它就會被淹沒。 ?


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


.......
.......
.......
.......
....#..
.......
.......


請你計算:依照科學(xué)家的預(yù)測,照片中有多少島嶼會被完全淹沒。 ?


【輸入格式】
第一行包含一個整數(shù)N。 ?(1 <= N <= 1000) ?
以下N行N列代表一張海域照片。 ?


照片保證第1行、第1列、第N行、第N列的像素都是海洋。 ?


【輸出格式】
一個整數(shù)表示答案。


【輸入樣例】
7?
.......
.##....
.##....
....##.
..####.
...###.
....... ?

【輸出樣例】
1 ?

資源約定:
峰值內(nèi)存消耗(含虛擬機(jī)) < 256M

?

簡單深度優(yōu)先搜索。不過需要注意的是求的是減少了島,不是剩余的島。

?代碼:

#include <iostream> //只要進(jìn)行標(biāo)記就行了。 #include <cstring> using namespace std; const int inf=1e3+7; struct node {char a;int flag; }themap[inf][inf]; int now=1,N; int x1[5]={0,0,1,0,-1}; int y1[5]={0,1,0,-1,0}; int temp[1000007]; bool check(int x,int y) {for(int i=1;i<=4;i++){if( themap[x+x1[i]][y+y1[i]].a=='#'&&themap[x+x1[i]][y+y1[i]].flag==0 )return false;}return true; } bool check1(int x,int y) //這里。 {for(int i=1;i<=4;i++){if(themap[x+x1[i]][y+y1[i]].a=='.')return false;}return true; } void dfs(int x,int y) {if(check(x,y)){return ;}for(int i=1;i<=4;i++){if( themap [ x+x1[i] ] [ y+y1[i] ].a=='#'&&x+x1[i]>=1&&x+x1[i]<=N&&y+y1[i]>=1&&y+y1[i]<=N &&themap[x+x1[i]][y+y1[i]].flag==0 ){themap[x+x1[i]][y+y1[i]].flag=now;dfs(x+x1[i],y+y1[i]);} } }int main() {memset( themap,0,sizeof(themap));memset(temp,0,sizeof(temp));cin>>N;getchar();for(int i=1;i<=N;i++) for(int j=1;j<=N;j++){scanf("%c",&themap[i][j].a);if(j==N)getchar(); }for(int i=1;i<=N;i++)for(int j=1;j<=N;j++){if(themap[i][j].flag ==0&&themap[i][j].a=='#'){themap[i][j].flag=now;dfs(i,j);now++;} }//cout<<now<<endl; for(int i=1;i<=N;i++)for(int j=1;j<=N;j++){if(themap[i][j].a=='#'&&check1(i,j) )temp[ themap[i][j].flag ]=1;}int ans=0;for(int i=1;i<=now+2;i++)if(temp[i]==1)ans++;cout<<now-1-ans<<endl;return 0; }

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的2018第九届蓝桥杯C语言第九题 全球变暖的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。