[蓝桥杯][2018年第九届真题]全球变暖(DFS)
题目描述
你有一张某海域NxN像素的照片,".“表示海洋、”#"表示陆地,如下所示:
…
.##…
.##…
…##.
…####.
…###.
…
其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。
由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。
例如上图中的海域未来会变成如下样子:
…
…
…
…
…#…
…
…
请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。
输入
第一行包含一个整数N。 (1 <= N <= 1000)
以下N行N列代表一张海域照片。
照片保证第1行、第1列、第N行、第N列的像素都是海洋。
输出
一个整数表示答案。
样例输入
7
…
.##…
.##…
…##.
…####.
…###.
…
样例输出
1
思路:对于每一个连通块,都要判断和海水相邻的陆地元素数和这个连通块总共的陆地元素数是否相等,如果想等的话,这个岛屿就会消失,否则就不会消失。
代码如下:
#include<bits/stdc++.h>
#define ll long long
using namespace std;const int maxx=1e3+100;
int d[][2]={{1,0},{0,1},{-1,0},{0,-1}};
char s[maxx][maxx];
int vis[maxx][maxx];
int n;inline void dfs(int x,int y,int &num,int &cnt)
{vis[x][y]=1;num++;if(x-1>=0&&s[x-1][y]=='.') cnt++;else if(x+1<n&&s[x+1][y]=='.') cnt++;else if(y-1>=0&&s[x][y-1]=='.') cnt++;else if(y+1<n&&s[x][y+1]=='.') cnt++;for(int i=0;i<4;i++){int tx=x+d[i][0];int ty=y+d[i][1];if(tx<0||tx>=n||ty<0||ty>=n||vis[tx][ty]||s[tx][ty]=='.') continue;dfs(tx,ty,num,cnt);}
}
int main()
{scanf("%d",&n);for(int i=0;i<n;i++) scanf("%s",s[i]);memset(vis,0,sizeof(vis));int ans=0;for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(s[i][j]=='#'&&vis[i][j]==0){int num=0,cnt=0;dfs(i,j,num,cnt);if(num==cnt) ans++;}}}printf("%d\n",ans);return 0;
}
努力加油a啊,(o)/~
[蓝桥杯][2018年第九届真题]全球变暖(DFS)相关推荐
- [蓝桥杯][2018年第九届真题]全球变暖
全球变暖 题目描述 思路解析 AC代码 题目描述 你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: ....... .##.... . ...
- C++ 字符串流stringstream(附蓝桥杯2018年第九届真题缩位求和题解)
一.stringstream介绍 stringstream是 C++ 提供的一个字符串流(stream),,必须包含其头文件: #include <sstream> < sstrea ...
- [蓝桥杯][2018年第九届真题]小朋友崇拜圈、耐摔指数、堆的计数、缩位求和、约瑟夫环
个人题解链接,蓝桥杯历届试题,正在更新中~ 文章目录 个人题解链接,蓝桥杯历届试题,正在更新中~ 小朋友崇拜圈 耐摔指数 堆的计数 缩位求和 约瑟夫环 小朋友崇拜圈 题目描述 班里N个小朋友,每个人都 ...
- [蓝桥杯][2018年第九届真题]整理玩具(树状数组)
题目描述 小明有一套玩具,一共包含NxM个部件.这些部件摆放在一个包含NxM个小格子的玩具盒中,每个小格子中恰好摆放一个部件. 每一个部件上标记有一个0~9的整数,有可能有多个部件标记相同的整数. 小 ...
- [蓝桥杯][2018年第九届真题]调手表(BFS)
题目描述 小明买了块高端大气上档次的电子手表,他正准备调时间呢. 在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有 n 分钟. 大家都知道,手表只有一个按钮可以把当前的数加一.在 ...
- [蓝桥杯][2018年第九届真题]版本分支(离线LCA模板)
题目描述 小明负责维护公司一个奇怪的项目.这个项目的代码一直在不断分支(branch)但是从未发生过合并(merge). 现在这个项目的代码一共有N个版本,编号1~N,其中1号版本是最初的版本. 除了 ...
- [蓝桥杯][2018年第九届真题]调手表-bfs
小明买了块高端大气上档次的电子手表,他正准备调时间呢.在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有 n 分钟.大家都知道,手表只有一个按钮可以把当前的数加一.在调分钟的时候, ...
- 题目 2194: 蓝桥杯2018年第九届真题-递增三元组
答题记录: 第一次做:答案错误 审题出错 第二次做:时间超限,用了3 个for循环 做了13'分钟 代码出错: for循环中循环变量写错 第三次做:答案正确,用哈希表化简时间复杂度,(减少一个for ...
- 蓝桥杯2018年第九届真题——乘积尾零
乘积尾零 一.题目内容 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 如下的 10 行数据,每行有 10 个整数,请你求出它们的乘积的末尾有多少个零? 5650 4542 ...
最新文章
- ADO.NET并发性
- 离ExtJS 4.1 beta发布只剩26个bug了
- axure rp制作输入法_Axure教程丨制作自己的Axure元件库
- ThreadPoolExecutor机制
- 7.4.5 鲁棒主成分分析 PCA
- cvc降噪和主动降噪_市面上的降噪耳机,物理降噪和主动降噪,你会怎么选择?...
- 熊猫数据集_用熊猫掌握数据聚合
- vue 组件第一次不渲染问题_vue使用组件不渲染 只有代码变了才渲染
- 掌握Java的内存模型,你就是解决并发问题最靓的仔
- 若依集成jwt实现登录授权访问(单体版)
- 老程序员被裁,应届生却能月薪 1.3 万?这你能忍?
- 【NOIP2002】【Luogu1032】字串变换
- Linux模块化增加设备驱动程序
- myexcel导入导出数据
- etr2模式,时力高HXD1C转换开关KRGV+ETR2
- 名帖90 蔡襄 楷书《临锺繇帖卷》
- 45页精华《2022中国建筑行业数字化转型研究报告》出炉(附下载)
- 苹果电脑mac系统运行卡顿 反应慢怎么办?
- 瑰雪黑阳rwby手游辅助材料 瑰雪黑阳rwby脚本工具获取途径
- Python虚拟环境——virtualenv
热门文章
- C++中WSAAsyncSelect模型的用法例程
- VIDEOIO ERROR: V4L: can't open camera by index 0
- mysql pdo 读取字段名_PHP使用PDO从mysql读取大量数据处理详解
- 报头中的偏移量作用_C语言中函数的实现
- java 根据经纬度计算多边形的面积_强基初中数学amp;学Python——第二十九课 根据海伦秦九韶公式编程计算三角形面积...
- glide 压缩图拍呢_用Glide-图片的压缩-图片压缩原理
- java调用python库pyd_Java调用Python的两种方式
- android异步网络连接开源:Android Asynchronous Http Client
- 浅谈关于nil和 null区别及相关问题
- set、get方法解析