岛屿数量(回溯法进行污染)详细解答

这篇博客介绍了如何使用C++实现深度优先搜索(DFS)和广度优先搜索(BFS)来计算二进制矩阵中的岛屿数量。作者提供了两种不同的解决方案,包括官方的DFS实现和自定义的DFS实现,并给出了广度优先搜索的代码示例。此外,还提到了pair的使用方法以及并查集作为另一种可能的解法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>
#include <vector>
#include <queue>
using namespace std;
//深度优先搜索  官方解决方案

//class Solution {
//private:
//  void dfs(vector<vector<char>>& grid, int r, int c)
//{
//    int nr = grid.size();
//    int nc = grid[0].size();
//
//    grid[r][c] = '0';
//    if (r - 1 >= 0 && grid[r-1][c] == '1') dfs(grid, r - 1, c);
//    if (r + 1 < nr && grid[r+1][c] == '1') dfs(grid, r + 1, c);
//    if (c - 1 >= 0 && grid[r][c-1] == '1') dfs(grid, r, c - 1);
//    if (c + 1 < nc && grid[r][c+1] == '1') dfs(grid, r, c + 1);
//  }
//
//public:
//  int numIslands(vector<vector<char>>& grid) {
//    int nr = grid.size();grid的大小
//    if (!nr) return 0;//判断是否为空
//    int nc = grid[0].size();一行有多大
//    int num_islands = 0;
//    for (int r = 0; r < nr; ++r) {  r是行数
//      for (int c = 0; c < nc; ++c) {
//        if (grid[r][c] == '1') {
//          ++num_islands;
//          dfs(grid, r, c);
//        }
//      }
//    }
//
//    return num_islands;
//  }
//};

2、
//自己写的
//class Solution {
//public:
//    Solution(vector<vector<int>>&arr)
//    {
//        vector<vector<int>>grid(5,vector<int>(5));
//        for(int i=0;i<5;i++)//vector对于二维数组不能直接初始化,
//        {
//            for(int j=0;j<5;j++)
//            {
//                grid[i][j]=arr[i][j];
//            }
//        }
//    }
//    int numIslands(vector<vector<int>>& grid) 
//    {
//        int size=grid.size();//有多少分组
//  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值