class Solution {
private:
int dir[5]={-1,0,1,0,-1};
public:
/**
* 判断岛屿数量
* @param grid char字符型vector<vector<>>
* @return int整型
*/
void dfs(int x, int y, vector<vector<char> >& grid, vector<vector<bool>> &mark, int row, int col){
if(x<0||x>=row||y<0||y>=col||mark[x][y]==false) return;
if(grid[x][y]=='1'){
mark[x][y] = false;
for(int i=0;i<4;i++){
dfs(x+dir[i],y+dir[i+1],grid,mark,row,col);
}
}
}
int solve(vector<vector<char> >& grid) {
// write code here
if(grid.size()==0){return 0;}
int row = grid.size();
int col = grid[0].size();
int count = 0;
vector<vector<bool>> mark(row,vector<bool>(col,true));
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
if(grid[i][j]=='1'&&mark[i][j]==true){
dfs(i,j,grid,mark,row,col);
count++;
}
}
}
return count;
}
};