您是员工公寓的负责人,为了方便人员管理,现在需要将公寓划片区管理,每个片区安排一名管理员。 假设公寓的分布为矩阵形式,中间会有小花园隔开。“片区”的定义为连续相邻的公寓区,即片区的上下左右都有小花园(对角线的不算相邻)。 公寓矩阵中 1 表示公寓,0 表示小花园,请您统计出整个公寓区有多少个“片区”。 例子: mat[M][N] = [                 [0,0,0],                 [1,1,0],                 [1,1,0],                 [0,0,1],                 [0,0,1],                 [1,1,0]             ]; 输出:3 mat[M][N] = [                 [1,0,0,0,0,0],                 [1,0,1,1,1,1],                 [0,0,0,0,0,0],                 [1,1,1,0,1,1],                 [1,1,1,0,1,1],                 [0,0,0,0,1,1]             ]; 输出:4

区块链毕设网qklbishe.com为您提供问题的解答

您是员工公寓的负责人,为了方便人员管理,现在需要将公寓划片区管理,每个片区安排一名管理员。
假设公寓的分布为矩阵形式,中间会有小花园隔开。“片区”的定义为连续相邻的公寓区,即片区的上下左右都有小花园(对角线的不算相邻)。
公寓矩阵中 1 表示公寓,0 表示小花园,请您统计出整个公寓区有多少个“片区”。
例子:
mat[M][N] = [
                [0,0,0],
                [1,1,0],
                [1,1,0],
                [0,0,1],
                [0,0,1],
                [1,1,0]
            ];
输出:3
mat[M][N] = [
                [1,0,0,0,0,0],
                [1,0,1,1,1,1],
                [0,0,0,0,0,0],
                [1,1,1,0,1,1],
                [1,1,1,0,1,1],
                [0,0,0,0,1,1]
            ];
输出:4

class Solution { private: // 深度优先搜索函数 void dfs(vector<vector><char>>& grid, int r, int c) { int nr = grid.size(); // 获取网格的行数 int nc = grid[0].size(); // 获取网格的列数 // 将当前位置标记为已访问(’0’表示已访问) grid[r][c] = ‘0’; // 如果上方位置合法且为陆地(’1’表示陆地),进行深度优先搜索 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(); // 如果没有行,直接返回 0 if (!nr) return 0; int nc = grid[0].size(); int num_islands = 0; // 遍历整个网格 for (int r = 0; r < nr; ++r) { for (int c = 0; c < nc; ++c) { // 如果当前位置是陆地 if (grid[r][c] == ‘1’) { // 岛屿数量加一 ++num_islands; // 对当前陆地所在的岛屿进行深度优先搜索标记 dfs(grid, r, c); } } } return num_islands; } }; </char></vector></char></vector>
53:29

以上就是关于问题您是员工公寓的负责人,为了方便人员管理,现在需要将公寓划片区管理,每个片区安排一名管理员。
假设公寓的分布为矩阵形式,中间会有小花园隔开。“片区”的定义为连续相邻的公寓区,即片区的上下左右都有小花园(对角线的不算相邻)。
公寓矩阵中 1 表示公寓,0 表示小花园,请您统计出整个公寓区有多少个“片区”。
例子:
mat[M][N] = [
                [0,0,0],
                [1,1,0],
                [1,1,0],
                [0,0,1],
                [0,0,1],
                [1,1,0]
            ];
输出:3
mat[M][N] = [
                [1,0,0,0,0,0],
                [1,0,1,1,1,1],
                [0,0,0,0,0,0],
                [1,1,1,0,1,1],
                [1,1,1,0,1,1],
                [0,0,0,0,1,1]
            ];
输出:4的答案

欢迎关注区块链毕设网-
web3一级市场套利打新赚钱空投教程

区块链NFT链游项目方科学家脚本开发培训

从业7年-专注一级市场


微信:btc9767
TELEGRAM :https://t.me/btcok9

具体资料介绍

web3的一级市场千万收益的逻辑


进群点我



qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 您是员工公寓的负责人,为了方便人员管理,现在需要将公寓划片区管理,每个片区安排一名管理员。 假设公寓的分布为矩阵形式,中间会有小花园隔开。“片区”的定义为连续相邻的公寓区,即片区的上下左右都有小花园(对角线的不算相邻)。 公寓矩阵中 1 表示公寓,0 表示小花园,请您统计出整个公寓区有多少个“片区”。 例子: mat[M][N] = [                 [0,0,0],                 [1,1,0],                 [1,1,0],                 [0,0,1],                 [0,0,1],                 [1,1,0]             ]; 输出:3 mat[M][N] = [                 [1,0,0,0,0,0],                 [1,0,1,1,1,1],                 [0,0,0,0,0,0],                 [1,1,1,0,1,1],                 [1,1,1,0,1,1],                 [0,0,0,0,1,1]             ]; 输出:4