fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. char mat[101][101];
  4. int visited[101][101]={0};
  5. void replace(char mat[101][101],int i,int j,int n,int m,int visited[101][101])
  6. {
  7. if(i==0 || j==0 || i==n-1 || j==m-1)
  8. return ;
  9. if(mat[i][j]=='X')
  10. return;
  11.  
  12. else
  13. {
  14. if(mat[i][j]=='O')
  15. {
  16. mat[i][j]='X';
  17. }
  18. replace(mat,i-1,j,n,m,visited);
  19. replace(mat,i+1,j,n,m,visited);
  20. replace(mat,i,j-1,n,m,visited);
  21. replace(mat,i,j+1,n,m,visited);
  22. if(visited[i][j]==1)
  23. mat[i][j]='O';
  24. }
  25. }
  26. bool check(char mat[101][101],int i,int j,int n,int m,int visited[101][101])
  27. {
  28. //check in left in row if there is X present
  29. for(int col=j-1;col>=0;col--)
  30. {
  31. if(mat[i][col]=='X')
  32. break;
  33. else if(col==0 && mat[i][col]=='O')
  34. return false;
  35. }
  36. //check in right in row if there is X present
  37. for(int col=j+1;col<m;col++)
  38. {
  39. if(mat[i][col]=='X')
  40. break;
  41. else if(col==m-1 && mat[i][col]=='O')
  42. return false;
  43. }
  44. //check in upward in col if there is X present
  45. for(int row=i-1;row>=0;row--)
  46. {
  47. if(mat[row][j]=='X')
  48. break;
  49. else if(row==0 && mat[row][j]=='O')
  50. return false;
  51. }
  52. //check in downward in col if there is X present
  53. for(int row=i+1;row<n;row++)
  54. {
  55. if(mat[row][j]=='X')
  56. break;
  57. else if(row==n-1 && mat[row][j]=='O')
  58. return false;
  59. }
  60. return true;
  61. }
  62. void find(char mat[101][101],int n,int m)
  63. {
  64. for(int i=1;i<n-1;i++)
  65. {
  66. for(int j=1;j<m-1;j++)
  67. {
  68. if(mat[i][j]=='O')
  69. {
  70. if(check(mat,i,j,n,m,visited)==true)
  71. replace(mat,i,j,n,m,visited);
  72. else
  73. visited[i][j]=1;
  74. }
  75. }
  76. }
  77.  
  78. }
  79. int main() {
  80. //code
  81. int t;
  82. cin>>t;
  83. while(t--)
  84. {
  85. int n,m;
  86. cin>>n>>m;
  87. for(int i=0;i<n;i++)
  88. {
  89. for(int j=0;j<m;j++)
  90. {
  91. cin>>mat[i][j];
  92. }
  93. }
  94. for(int i=0;i<n;i++)
  95. {
  96. for(int j=0;j<m;j++)
  97. cout<<mat[i][j]<<" ";
  98. cout<<endl;
  99. }
  100. cout<<endl;
  101. find(mat,n,m);
  102. for(int i=0;i<n;i++)
  103. {
  104. for(int j=0;j<m;j++)
  105. cout<<mat[i][j]<<" ";
  106. cout<<endl;
  107. }
  108. cout<<endl;
  109. }
  110. return 0;
  111. }
Success #stdin #stdout 0s 4564KB
stdin
2
4 7
O O O O X X O O X O X O O X X X X X O X O O X X X O O O
5 8
X O X O O O X O X O X O X X O X O X X X X X O O X O X X X X O X X X X O O X X X
stdout
O O O O X X O 
O X O X O O X 
X X X X O X O 
O X X X O O O 

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

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

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