#include <vector>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 判断岛屿数量
     * @param grid char字符型vector<vector<>> 
     * @return int整型
     */
    int nex[4][2]={{0,-1},{0,1},{1,0},{-1,0}};
    void dfs(vector< vector<char>>& grid,int i,int j ){
        int n=grid.size();
        int m=grid[0].size();
        grid[i][j]='0';
        for(int t=0;t<4;t++){
            int dx=i+nex[t][0];
            int dy=j+nex[t][1];
            if(dx>=0&&dx<n&&dy>=0&&dy<m&&grid[dx][dy]=='1'){
                dfs(grid,dx,dy);
            }
        }
    }
    int solve(vector<vector<char> >& grid) {
        // write code here
        int n=grid.size();
        if(n==0)
            return 0;
        int m=grid[0].size();
        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;
    }
};

经典的DFS,将一个1遍历周边的四个方向,遇1置0即可。