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

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

其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。

由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。

例如上图中的海域未来会变成如下样子:

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

请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。

【输入格式】
第一行包含一个整数N。  (1 <= N <= 1000)  
以下N行N列代表一张海域照片。

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

【输出格式】
一个整数表示答案。

【输入样例】

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

【输出样例】
1

资源约定:
峰值内存消耗(含虚拟机) < 256M

简单深度优先搜索。不过需要注意的是求的是减少了岛,不是剩余的岛。

代码:

#include <iostream>        //只要进行标记就行了。
#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;
} 

2018第九届蓝桥杯C语言第九题 全球变暖相关推荐

  1. 数组三元数c语言程序,递增三元数组——第九届蓝桥杯C语言B组(省赛)第六题...

    原创 标题:递增三元组 给定三个整数数组 A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN], 请你统计有多少个三元组(i ...

  2. c语言中猴子拿香蕉的代码题,猴子分香蕉(2018年第九届蓝桥杯省赛第二题)

    ```java /** * 标题:猴子分香蕉 5只猴子是好朋友,在海边的椰子树上睡着了.这期间,有商船把一大堆香蕉忘记在沙滩上离去. 第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份 ...

  3. 2018第九届蓝桥杯省赛真题 C语言B组 第一题

    标题:第几天 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容. 答案:125 可以被四百整除,所以是闰年,二 ...

  4. 2018年第九届蓝桥杯C语言B组答案第一题:第几天

    标题:第几天 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容. 方法一:直接用笔算,注意2000年为闰年,2 ...

  5. 明码(蛇皮解法)——第九届蓝桥杯C语言B组(省赛)第二题

    先来个注意事项:所用算法基于C++语言(C不支持我也很无奈╮(╯▽╰)╭) 太长不看请直接跳到标题0x03 (:з」∠) 0x00 综述 解法灵感来源于以前写DES算法(一种加密算法)的时候参考的别人 ...

  6. 【第九届蓝桥杯大赛决赛真题】JAVA大学C组题解

    有空就会更新.... 有的题目重复了:再另一篇帖子:https://www.cnblogs.com/dgwblog/p/9090923.html 02 结果填空(满分29分) 标题:海盗与金币 12名 ...

  7. 整理玩具 第九届蓝桥杯决赛第四题 java实现

    标题:整理玩具 小明有一套玩具,一共包含NxM个部件.这些部件摆放在一个包含NxM个小格子的玩具盒中,每个小格子中恰好摆放一个部件. 每一个部件上标记有一个0~9的整数,有可能有多个部件标记相同的整数 ...

  8. 2018省赛第九届蓝桥杯真题C语言B组第十题题解 乘积最大

    2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:乘积最大 给定N个整数A1, A2, ... AN.请你从中选出K个数,使其乘积最大.   请你求出最大的乘积,由于乘积可能超出整型范围,你只 ...

  9. 2018省赛第九届蓝桥杯真题C语言B组第五题题解 快速排序

    2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:快速排序. 以下代码可以从数组a[]中找出第k小的元素. 它使用了类似快速排序中的分治算法,期望时间复杂度是O(N)的. 请仔细阅读分析源码, ...

最新文章

  1. JAVA-初步认识-第十一章-异常-概述
  2. iOS发展- 文件共享(使用iTunes导入文件, 并显示现有文件)
  3. mysql同步到另一台服务器_mysql两台服务器主从同步
  4. jdbc连接数据scanip_JDBC连接数据库的四种方式:DriverManager,DataSource,DBCP,C3P0
  5. LSTM+MDN【混合密度网络】---sketch rnn
  6. java8 stringbuilder_有了Java8的“+”真的可以不要StringBuilder了吗
  7. 050、JVM实战总结:动手实验:使用 jstat 摸清线上系统的JVM运行状况
  8. 怎样快速读完一本网络小说
  9. Spring aop切面插入事物回滚
  10. iOS ReactiveCocoa 最全常用API整理
  11. linux重定向到某目录文件,linux shell中12 21 1file_path重定向语法详解
  12. mac80211概览
  13. J2SE基础夯实系列之正则表达式Java
  14. 播放器的html代码怎么写,制作HTML播放器代码及方法
  15. 我的毕业设计后端技术栈
  16. 400. 第 N 位数字【我亦无他唯手熟尔】
  17. 组合数学 多重集的排列和组合
  18. SQLite 对时间的支持
  19. 9、MyBatis的动态SQL
  20. 2022年河北省高职单招(综合素质)考试冲刺试题及答案

热门文章

  1. Qtum量子链受邀出席日本早稻田研究所区块链教育讲座
  2. Linux第二周学习笔记(5)
  3. JavaScript No Overloading 函数无重载之说
  4. 使用ajax预加载图片
  5. 认识和入门 WebRTC
  6. 怎样建设WEB Cache
  7. git 在本地新建分支之后上传代码到远程
  8. go gorm框架一对多查询代码示例
  9. 【收藏】Docker安装微信
  10. Linux使用lvresize扩展或缩减LV逻辑卷大小