• P1141 01迷宫(dfs+染色联通块)


     染色联通块:

    一个格联通的所有格

    每个对应的最大可联通格子的个数均相同

    分析:

    1.只需要计算每个块里的元素个数

    2.元素标记对应某个块

    3.查找元素时:

    由        (1)元素坐标->

               (2)查找对应块的编号(visit[]查询)->

               (3)输出对应块的元素个数(item[]查询)

     代码如下:

    1. #include<iostream>
    2. using namespace std;
    3. int next1[5][3] = { {1,0},{-1,0},{0,1},{0,-1} };
    4. // 迷宫
    5. char map[1009][1009] = {0};
    6. int visit[1009][1009] = { 0 };
    7. // 记录联通块记录的数量
    8. int item[1000009] = { 0 }, k = 1;
    9. // 记录单个联通块的元素数量
    10. int n = 1;
    11. // 矩阵的边长,查看的数量
    12. int num = 0, check = 0;
    13. void bfs(int x, int y);
    14. int main()
    15. {
    16. scanf("%d %d", &num, &check);
    17. for (int i = 0; i < num; i++)
    18. {
    19. scanf("%s", map[i]);
    20. }
    21. // 如果map为0,即该点未有联通块
    22. for (int i = 0; i < num; i++)
    23. {
    24. for (int j = 0; j < num; j++)
    25. {
    26. if (!visit[i][j])
    27. {
    28. visit[i][j] = k; item[k] = 1;
    29. bfs(i, j);
    30. item[k] = n;
    31. k++; n = 1;
    32. }
    33. }
    34. }
    35. for (int i = 0; i < check; i++)
    36. {
    37. int t1 = 0, t2 = 0;
    38. scanf("%d %d", &t1, &t2);
    39. cout << item[visit[t1 - 1][t2 - 1]] << endl;
    40. }
    41. return 0;
    42. }
    43. void bfs(int x, int y)
    44. {
    45. for (int i = 0; i < 4; i++)
    46. { // 广度四个方向
    47. int tx = x + next1[i][0], ty = y + next1[i][1];
    48. // 数组溢出continue
    49. if (tx < 0 || tx >= num || ty < 0 || ty >= num) continue;
    50. // 该方向是一样,无法走continue
    51. if (map[x][y] == map[tx][ty]) continue;
    52. if (!visit[tx][ty])
    53. {
    54. // 标记坐标属于的联通块编号
    55. visit[tx][ty] = k;
    56. // 计算该联通块的元素数量
    57. n++;
    58. bfs(tx, ty);
    59. }
    60. }
    61. }

  • 相关阅读:
    Nginx 默认location index设置网站的默认首页
    【已解决】nginx x-cache: MISS
    pcie reset系列之 内核框架
    java基础09
    Hyperbolic geometry
    Java Elasticsearch 按一定时间间隔(timeInterval)循环查询数据
    使用Selenium的WebDriver进行长截图
    线性代数的本质(十)——矩阵分解
    java毕业设计电影院售票系统Mybatis+系统+数据库+调试部署
    htmx-使HTML更强大
  • 原文地址:https://blog.csdn.net/2301_79140115/article/details/134542411