
AcWing 1233. 全球变暖 bfs+判断
发布日期:2021-05-12 17:10:47
浏览次数:18
分类:精选文章
本文共 1954 字,大约阅读时间需要 6 分钟。
你有一张某海域 N×N 像素的照片,”.”表示海洋、”#”表示陆地,如下所示:
........##.....##........##...####....###........
其中”上下左右”四个方向上连在一起的一片陆地组成一座岛屿,例如上图就有 2 座岛屿。
由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。
具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。
例如上图中的海域未来会变成如下样子:
................................#................
请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。
输入格式
第一行包含一个整数N。以下 N 行 N 列,包含一个由字符”#”和”.”构成的 N×N 字符矩阵,代表一张海域照片,”#”表示陆地,”.”表示海洋。
照片保证第 1 行、第 1 列、第 N 行、第 N 列的像素都是海洋。
输出格式
一个整数表示答案。数据范围
1≤N≤1000 输入样例1:7........##.....##........##...####....###........
输出样例1:
1
输入样例2:
9..........##.##....#####....##.##.............##.#.....#.###....#..#.............
输出样例2:
1
这道题类似于填充,我在[啊哈算法]中了解到遍历一个岛的每一个点就采用广搜的方式的去填充这个岛,这样就可以填充每一个点(表示一个岛),然后我们开始判断每个岛是否没淹没(即判断每个点是否都与海相邻,我们需要加一个check来判断是否与海相邻,最后输出所有点都被淹没的岛。
思路:
bfs+判断代码如下:
#include#include #include using namespace std;#define x first#define y secondtypedef pair PII;int dx[]={ 0,0,1,-1},dy[]={ 1,-1,0,0};const int N=1010;char g[N][N];bool st[N][N];int n;bool check(int x,int y){ for(int i=0;i<4;i++) { int tx=x+dx[i]; int ty=y+dy[i]; if(tx<0||ty<0||tx>=n||ty>=n) continue; if(g[tx][ty]=='.') return false; } return true;}int bfs(int sx,int sy){ queue q; st[sx][sy]=true; q.push({ sx,sy}); int z=0; while(q.size()) { auto t=q.front(); q.pop(); for(int i=0;i<4;i++) { int tx=t.x+dx[i]; int ty=t.y+dy[i]; if(tx<0||ty<0||tx>=n||ty>=n) continue; if(st[tx][ty]||g[tx][ty]=='.') continue; st[tx][ty]=true; if(check(tx,ty)) z++; q.push({ tx,ty}); } } if(z) return 0; else return 1;}int main(void){ scanf("%d",&n); for(int i=0;i >g[i]; int res=0; for(int i=0;i
这道题也是一遍就过去样例了,可能样例比较松,我还是成功一遍过了,要坚持下去。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月06日 01时41分58秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
SpringBoot打包之后乱码
2021-05-14
因SGA分配错误无法启动数据库
2021-05-14
Oracle修改字段类型方法总结
2021-05-14
ORA-00020 超过当前最大连接数
2021-05-14
合理控制oracle数据库具有DBA权限的用户
2021-05-14
喝红茶是否会上火
2021-05-14
Android进阶解密读书笔记2——第2章:Android系统启动——第1、2小节
2021-05-14
GreenDao之注解
2021-05-14
Android使用Font Awesome
2021-05-14
主线程中Looper的轮询死循环为何没有阻塞主线程?
2021-05-14
Gradle实战四:Jenkins持续集成
2021-05-14
使用RestTemplate,显示请求信息,响应信息
2021-05-14
wgcloud运维监控系统错误:防篡改校验错误次数大于10次,不再上报数据
2021-05-14
为什么WGCLOUD安装完后,启动服务端打不开网页
2021-05-14
wgcloud网络监控出现负值
2021-05-14
iOS 开发官方文档链接收集
2021-05-14
网易云面试(Android岗)之旅,差点被这些基础题绊了跟头。
2021-05-14
linux学习笔记(四)基本用户管理与帮助命令
2021-05-14