class Solution {
public:
/**
遍历,遇到一,岛屿数加1,
直接在原矩阵中进行修改,把正在检测到的岛屿都置为0;
*/
int solve(vector<vector<char> >& grid) {
int n=grid.size();
int m=grid[0].size();
if(n == 0){
return 0;
}
int count =0;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(grid[i][j] == '1'){
count++;
dfs(grid, i, j);
}
}
}
return count;
}
void dfs(vector<vector<char>>& grid, int i, int j){
grid[i][j] = 0;
if(j+1 < grid[0].size() && grid[i][j+1] == '1'){
dfs(grid, i, j+1);
}
if( i+1<grid.size() && grid[i+1][j] == '1' ){
dfs(grid, i+1, j);
}
if( i-1 >= 0 && grid[i-1][j] == '1' ){
dfs(grid, i-1, j);
}
if( j-1 >=0 && grid[i][j-1] == '1' ){
dfs(grid, i, j-1);
}
}
};