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