#include <bits/stdc++.h>
using namespace std;
int m,n;
void dfs(vector<vector<char> >&k,int x,int y)
{
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
if(x<0||x>=n||y<0||y>=m||k[x][y]=='A'||k[x][y]!='O') return ;
k[x][y]='A';
dfs(k,x-1,y);
dfs(k,x+1,y);
dfs(k,x,y-1);
dfs(k,x,y+1);
}
void solve(vector<vector<char> >&k)
{
n=k.size();
if(n==0)
return;
m=k[0].size();
for(int i=0;i<n;i++)
{
if(k[i][0]=='O') dfs(k,i,0);
if(k[i][m-1]=='O') dfs(k,i,m-1);
}
for(int j=0;j<m;j++)
{
if(k[0][j]=='O') dfs(k,0,j);
if(k[n-1][j]=='O') dfs(k,n-1,j) ;
}
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
if(k[i][j]=='O')
k[i][j]='X';
else if(k[i][j]=='A')
k[i][j]='O';
}
return ;
}
int main()
{
vector<vector< char > > k{{
'X','X','X','X'},
{
'X','O','O','X'},
{
'X','X','O','X'},
{
'X','O','X','X'}};
for(auto i : k) {
for(auto j : i) {
cout<<j<<"\t";
}
cout<<endl;
}
solve(k);
cout<<"输出结果"<<endl;
for(auto i : k) {
for(auto j : i) {
cout<<j<<"\t";
}
cout<<endl;
}
}