3 条题解

  • 2
    @ 2024-12-19 20:17:14
    #include<bits/stdc++.h>
    using namespace std;
    const int N=210;
    int n,m,xi,xa,yi,ya;
    int dx[8]={-1,-1,0,1,1,1,0,-1},dy[8]={0,1,1,1,0,-1,-1,-1};
    string mp[N];
    bool st[N][N];
    void dfs(int x,int y)
    {
    	for(int i=0;i<8;i++)
    	{
    		int X=x+dx[i],Y=y+dy[i];
    		if(X<0||X>=n||Y<0||Y>=m||mp[X][Y]=='*'||st[X][Y])continue;
    		xi=min(xi,X);xa=max(xa,X);
    		yi=min(yi,Y);ya=max(ya,Y);
    		st[X][Y]=true;
    		dfs(X,Y);
    	}
    }
    signed main()
    {
    	ios::sync_with_stdio(false);
    	cin.tie(0);cout.tie(0);
    	cin>>n>>m;
    	for(int i=0;i<n;i++)
    	{
    		cin>>mp[i];
    	}
    	for(int i=0;i<n;i++)
    	{
    		for(int j=0;j<m;j++)
    		{
    			if(mp[i][j]=='.'&&!st[i][j])
    			{
    				xi=i,xa=i,yi=j,ya=j;
    				st[i][j]=true;
    				dfs(i,j);
    				for(int k=xi;k<=xa;k++)
    				{
    					for(int l=yi;l<=ya;l++)
    					{
    						mp[k][l]='.';
    					}
    				}
    			}
    		}
    	}
    	for(int i=0;i<n;i++)
    	{
    		for(int j=0;j<m;j++)
    		{
    			cout<<mp[i][j];
    		}
    		cout<<endl;
    	}
    }
    

    信息

    ID
    1096
    时间
    1000ms
    内存
    128MiB
    难度
    8
    标签
    递交数
    141
    已通过
    22
    上传者