130. Surrounded Regions(unsolved)

来源:互联网 发布:2016最新网络神曲 编辑:程序博客网 时间:2024/06/10 19:25

Given a 2D board containing ‘X’ and ‘O’ (the letter O), capture all regions surrounded by ‘X’.

A region is captured by flipping all ‘O’s into ‘X’s in that surrounded region.

For example,
X X X X
X O O X
X X O X
X O X X
After running your function, the board should be:

X X X X
X X X X
X X X X
X O X X

解答:
这道题就是先找出四条边中的O,然后与这个O连接的左右上下都设置为OX都设置回O

class Solution {public:    void solve(vector<vector<char>>& board) {        if(board.empty()) return ;        for(int i=0;i<board.size();i++)        {            for(int j=0;j<board[0].size();j++)            {                if((i==0||j==0||i==board.size()-1||j==board[i].size()-1)&&(board[i][j]=='O'))                    solvedfs(board,i,j);            }        }        for(int i=0;i<board.size();i++)        {            for(int j=0;j<board[0].size();j++)            {                if(board[i][j]=='$') board[i][j]='O';                else if(board[i][j]=='O') board[i][j]='X';            }        }    }    void solvedfs(vector<vector<char>>& board,int i,int j)    {        if(board[i][j]=='O')         {            board[i][j]='$';            if(i>0&&(board[i-1][j]=='O')) solvedfs(board,i-1,j);            if((j>1)&&(board[i][j-1]=='O')) solvedfs(board,i,j-1);            if(i<board.size()-1&&(board[i+1][j]=='O')) solvedfs(board,i+1,j);            if(j<board[i].size()-1&&(board[i][j+1]=='O')) solvedfs(board,i,j+1);        }        return ;    }};
0 0
原创粉丝点击