3 条题解
-
2
#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
- 上传者