Easy dfs solution


#1
void dfs(vector<vector<char> > &A,vector<vector<char> > &c, int i, int j){
    int n=c.size(),m=c[0].size();
    if(i<0||i>=n||j<0||j>=m)return ;
    if(c[i][j]=='X')return;
    if(A[i][j]=='O')return;
    A[i][j]='O';
    
    dfs(A,c,i+1,j);
    dfs(A,c,i,j+1);
    dfs(A,c,i,j-1);
    dfs(A,c,i-1,j);
}
void Solution::solve(vector<vector<char> > &A) {
    vector<vector<char> >c=A;
    int n=c.size(),m=c[0].size();
    for(int i=0;i<n;i++)for(int j=0;j<m;j++)A[i][j]='X';
    for(int i=0;i<n;i++){
        if(c[i][0]=='O')dfs(A,c,i,0);
        if(c[i][m-1]=='O')dfs(A,c,i,m-1);
    }
    for(int j=0;j<m;j++){
        if(c[0][j]=='O')dfs(A,c,0,j);
        if(c[n-1][j]=='O')dfs(A,c,n-1,j);
    }
    
}