s4553711
6/15/2017 - 2:48 PM

200.cpp

class Solution {
public:
    int dir[4][2]={
        {-1,0},
        {1,0},
        {0,1},
        {0,-1}
    };
    int numIslands(vector<vector<char>>& grid) {
        int sum = 0;
        for(int i = 0; i < grid.size(); i++)
            for(int j = 0; j < grid[i].size(); j++) {
                if (grid[i][j] == '1') {
                    sum++;
                    grid[i][j] = '0';
                    dfs(i, j, grid);
                }
            }
        return sum;
    }
    void dfs(int i, int j, vector<vector<char> >& grid) {
        for(int k = 0; k < 4; k++){
            int x = i + dir[k][0];
            int y = j + dir[k][1];
            if (x>=0 && x < grid.size() && y>=0 && y<grid[0].size() && grid[x][y] == '1') {
                grid[x][y] = '0';
                dfs(x, y, grid);
            }
        }
    }
};