• 搜索——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题库

  • 相关阅读:
    面向对象设计原则总结:SOLID/LKP/DRY/KISS…
    SG90舵机的pwm信号-使用linux定时器实现控制
    Sharding-JDBC概述
    Python x-www-form-urlencoded post
    Css3使用
    MyEclipse 新手使用教程
    ts重点学习143-描述文件声明
    Multi-Grade Deep Learning for Partial Differential Equations
    不得不会的MySQL数据库知识点(二)
    【Spring Cloud】Gateway的配置与使用
  • 原文地址:https://blog.csdn.net/qq_62417282/article/details/133023504