题解 | #岛屿数量#
岛屿数量
https://www.nowcoder.com/practice/0c9664d1554e466aa107d899418e814e
void dfs(char** grid, int gridRowLen, int gridColLen, int x, int y) { // 判断当前坐标是否在矩阵范围内 if (x < 0 || x >= gridRowLen || y < 0 || y >= gridColLen) { return; } // 如果当前位置不是陆地或者已经访问过,返回 if (grid[x][y] == '0') { return; } // 标记当前位置为海洋,表示已经访问过 grid[x][y] = '0'; // 递归处理四个方向 dfs(grid, gridRowLen, gridColLen, x - 1, y); // 上 dfs(grid, gridRowLen, gridColLen, x + 1, y); // 下 dfs(grid, gridRowLen, gridColLen, x, y - 1); // 左 dfs(grid, gridRowLen, gridColLen, x, y + 1); // 右 } int solve(char** grid, int gridRowLen, int* gridColLen) { int islandCount = 0; // 遍历整个网格 for (int i = 0; i < gridRowLen; i++) { for (int j = 0; j < *gridColLen; j++) { // 如果当前格子是陆地且没有被访问过 if (grid[i][j] == '1') { // 使用DFS搜索整个岛屿并标记 dfs(grid, gridRowLen, *gridColLen, i, j); // 发现一个新的岛屿,计数加一 islandCount++; } } } return islandCount; }