Surrounded Regions

 

    int m = 0,n=0;
    void solve(vector<vector<char>> &board) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        if(board.empty()||board[0].empty())
            return;
        m = board.size();
        n = board[0].size();
        
        int i,j;
        for(j=0;j<n;j++)
        {
            if(board[0][j]=='O')
                dfs(0,j,board);
            if(board[m-1][j]=='O')
                dfs(m-1,j,board);
        }
        
        for(i=1;i<m-1;i++)
        {
            if(board[i][0]=='O')
                dfs(i,0,board);
            if(board[i][n-1]=='O')
                dfs(i,n-1,board);
        }
        
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
            {
                if(board[i][j]=='+')
                    board[i][j] = 'O';
                else if(board[i][j]=='O')
                    board[i][j] = 'X';
            }
        }
        
    }
    
    void dfs(int i,int j,vector<vector<char>>& board)
    {
        if(i>=m||i<0||j<0||j>=n||board[i][j]!='O')
            return;
        board[i][j] = '+';
        dfs(i-1,j,board);
        dfs(i+1,j,board);
        dfs(i,j-1,board);
        dfs(i,j+1,board);
    }

  

posted @ 2013-10-08 20:55  summer_zhou  阅读(141)  评论(0编辑  收藏  举报