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; } };