
class Solution {
public:
int numIslands(vector<vector<char>>& grid) {
int row = grid.size();
int col = grid[0].size();
if(row==0)
return 0;
int count = 0; // 岛屿的数量
for(int i = 0; i < row; i++)
for(int j = 0; j < col; j++){
if(grid[i][j] == '1'){
count++;
dfs(grid, i, j);
}
}
return count;
}
void dfs(vector<vector<char>> &grid, int i, int j){
// 注意此处需要引用
//
int row = grid.size();
int col = grid[0].size();
grid[i][j] = '0'; // 访问过就置为0
if(i-1 >= 0&&grid[i-1][j]=='1') dfs(grid, i-1, j);
if(i+1 < row&&grid[i+1][j]=='1') dfs(grid, i+1, j);
if(j-1 >= 0&&grid[i][j-1]=='1') dfs(grid, i, j-1);
if(j+1 < col&&grid[i][j+1]=='1') dfs(grid, i, j+1);
}
};