编辑代码

#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;
}
}