Submission Details

 

 

class Solution {
public:
    void deal(int i,int j,vector<vector<char>>&board,int h,int w)
    {
        typedef pair<int,int> point;
        queue<point>q;
        q.push(point(i,j));
        board[i][j]='1';
        while(!q.empty())
        {
            point tmp=q.front();
            q.pop();
            int x=tmp.first,y=tmp.second;
            if(x!=0&&board[x-1][y]=='O')
            {
               q.push(point(x-1,y));
               board[x-1][y]='1';
            }
            if(x!=h-1&&board[x+1][y]=='O')
            {
               q.push(point(x+1,y));
               board[x+1][y]='1';
            }
            if(y!=0&&board[x][y-1]=='O')
            {
               q.push(point(x,y-1));
               board[x][y-1]='1';
            }
            if(y!=w-1&&board[x][y+1]=='O')
            {
              q.push(point(x,y+1));
               board[x][y+1]='1';
            }
        }
    }
    void solve(vector<vector<char>>& board) {
       int h=board.size();
       if(h==0) return ;
       int w=board[0].size();
       if(w==0) return ;
       int i,j;
       for(i=0;i<h;i++)
       {
           if(board[i][0]=='O')
           deal(i,0,board,h,w);
           if(board[i][w-1]=='O')
           deal(i,w-1,board,h,w);
       }
       for(j=0;j<w;j++)
       {
           if(board[0][j]=='O')
           deal(0,j,board,h,w);
           if(board[h-1][j]=='O')
           deal(h-1,j,board,h,w);
       }
       for(i=0;i<h;i++)
       {
           for(j=0;j<w;j++)
           {
               if(board[i][j]=='1')
               board[i][j]='O';
               else
               board[i][j]='X';
           }
       }
    }
};

 

posted on 2016-03-29 16:33  RenewDo  阅读(179)  评论(0编辑  收藏  举报

导航