码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 搜索——flood fill


            flood fill,即洪水泛滥,用来解决连通块问题,通过宽搜(bfs)找到某个点所在的连通块,用深搜(dfs)的话,在数据范围较大的时候可能存在爆桟的情况。

    1097. 池塘计数 - AcWing题库

    农夫约翰有一片 N∗M 的矩形土地。

    最近,由于降雨的原因,部分土地被水淹没了。

    现在用一个字符矩阵来表示他的土地。

    每个单元格内,如果包含雨水,则用”W”表示,如果不含雨水,则用”.”表示。

    现在,约翰想知道他的土地中形成了多少片池塘。

    每组相连的积水单元格集合可以看作是一片池塘。

    每个单元格视为与其上、下、左、右、左上、右上、左下、右下八个邻近单元格相连。

    请你输出共有多少片池塘,即矩阵中共有多少片相连的”W”块。

    输入格式

    第一行包含两个整数 N 和 M。

    接下来 N 行,每行包含 M 个字符,字符为”W”或”.”,用以表示矩形土地的积水状况,字符之间没有空格。

    输出格式

    输出一个整数,表示池塘数目。

    数据范围

    1≤N,M≤1000

    输入样例:
    1. 10 12
    2. W........WW.
    3. .WWW.....WWW
    4. ....WW...WW.
    5. .........WW.
    6. .........W..
    7. ..W......W..
    8. .W.W.....WW.
    9. W.W.W.....W.
    10. .W.W......W.
    11. ..W.......W.
    输出样例:
    3

    思路:题目要求我们算出雨水的连通块,我们枚举每一个点,当遍历到雨水点进行宽搜,将其连通块全部赋值为非雨水点,避免重复遍历,累加遍历的连通块即可得到答案。

    1. #include
    2. #include
    3. #include
    4. #include
    5. using namespace std;
    6. typedef pair<int, int> PII;
    7. const int N = 1010;
    8. int n, m;
    9. char g[N][N];
    10. void bfs(int x, int y)
    11. {
    12. queue q;
    13. q.push({x, y});
    14. while (q.size())
    15. {
    16. auto t = q.front();
    17. q.pop();
    18. //小技巧,遍历周围八个点
    19. for(int xx = t.first - 1; xx <= t.first + 1; xx ++ )
    20. for(int yy = t.second - 1; yy <= t.second + 1; yy ++ )
    21. if(xx >= 0 && xx < n && yy >= 0 && yy < m && g[xx][yy] == 'W')
    22. {
    23. g[xx][yy] = '.';
    24. q.push({xx, yy});
    25. }
    26. }
    27. }
    28. int main()
    29. {
    30. cin >> n >> m;
    31. for(int i = 0; i < n; i ++ )
    32. for(int j = 0; j < m; j ++ )
    33. cin >> g[i][j];
    34. int res = 0;
    35. for(int i = 0; i < n; i ++ )
    36. for(int j = 0; j < m; j ++ )
    37. if(g[i][j] == 'W')
    38. {
    39. res ++ ;
    40. bfs(i, j);
    41. }
    42. cout << res;
    43. return 0;
    44. }

    1098. 城堡问题 - AcWing题库

    1106. 山峰和山谷 - AcWing题库

  • 相关阅读:
    拼多多启动第四届农货节:携手10万涉农店铺,与8.8亿消费者共享“秋收喜悦”
    2023-09-16 CSP-J 第一轮初赛真题解析
    微信小程序授权登录?
    [附源码]计算机毕业设计springboot儿童早教课程管理系统论文2022
    java后端请求过滤options方式,亲测有效
    【软件测试】软件测试工程师职位核心任务?测试人测试职业发展?
    TLS及反调试机制
    C++语法基础(5)——数组与字符串
    你能猜出这是什么代码吗
    Selenium —— 网页frame与多窗口处理!
  • 原文地址:https://blog.csdn.net/qq_62417282/article/details/133023504
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号