你喜欢的公司网站,网上做效果图网站,网站开发后台编辑系统,沈阳哪个医院人流好一点思路#xff1a;遍历整个矩阵#xff0c;对每个格子执行以下操作#xff1a; 如果格子是陆地#xff08;‘1’#xff09;#xff0c;则将其标记为已访问#xff08;‘0’#xff09;#xff0c;并从当前位置开始进行深度优先搜索#xff0c;将与当前格子相邻的陆地都…思路遍历整个矩阵对每个格子执行以下操作 如果格子是陆地‘1’则将其标记为已访问‘0’并从当前位置开始进行深度优先搜索将与当前格子相邻的陆地都标记为已访问。 每次发现一个陆地都增加岛屿数量的计数器。
注意和黑色瓷砖那题区分不能套那道题的模板。
class Solution {
public:void dfs(int i, int j, int m, int n, vectorvectorchar grid) {if (i 0 || i m || j 0 || j n || grid[i][j] 0)return;grid[i][j] 0; // 将当前单元格标记为已访问// 探索四个可能的方向dfs(i - 1, j, m, n, grid); // 上dfs(i 1, j, m, n, grid); // 下dfs(i, j - 1, m, n, grid); // 左dfs(i, j 1, m, n, grid); // 右}int numIslands(vectorvectorchar grid) {int count 0;int m grid.size();int n grid[0].size();for (int i 0; i m; i) {for (int j 0; j n; j) {if (grid[i][j] 1) {// 从当前陆地格子开始进行深度优先搜索dfs(i, j, m, n, grid);count; // 增加岛屿数量计数} }}return count;}
};