Skip to content

Latest commit

 

History

History
59 lines (56 loc) · 1.78 KB

7.md

File metadata and controls

59 lines (56 loc) · 1.78 KB
 void dfs(int r, int c, int rows, int cols,vector<vector<char>> &board, vector<vector<int>> &vis){
        // board[r][c]='Y';
        vis[r][c]=1;
        int dx[4]={-1,0,1,0};
        int dy[4]={0,1,0,-1};
        for(int i=0;i<4;i++){
            int nrow=r+dx[i];
            int ncol=c+dy[i];
            if(nrow>=0 && ncol>=0 && nrow<rows && ncol<cols && board[nrow][ncol]=='O' && vis[nrow][ncol]==0){
                dfs(nrow,ncol,rows,cols,board,vis);            
            }
        }
    }
public:
    void solve(vector<vector<char>>& board) {
        int rows = board.size();
        int cols = board[0].size();
        vector<vector<int>> vis(rows,vector<int> (cols,0));
        for(int i=0;i<rows;i++){
            if(board[i][0]=='O'){
                if(!vis[i][0]){
                dfs(i,0,rows,cols,board,vis);
                }
            }
    
            if(board[i][cols-1]=='O'){
                // vis[i][0]=1;
                if(!vis[i][cols-1]){
                dfs(i,cols-1,rows,cols,board,vis);
                }
            }
        }
        for(int j=0;j<cols;j++){
            if(board[0][j]=='O'){
                // vis[i][0]=1;
                if(!vis[0][j]){
                dfs(0,j,rows,cols,board,vis);
                }
            }
            if(board[rows-1][j]=='O'){
                // vis[i][0]=1;
                if(!vis[rows-1][j]){
                dfs(rows-1,j,rows,cols,board,vis);
                }
            }
        }
        for(int i=0;i<rows;i++){
            for(int j=0;j<cols;j++){
                if(vis[i][j]==0 && board[i][j]=='O'){
                    board[i][j]='X';
                }
               
            }
        }
    }