求助
查看原帖
求助
492010
RAVE_LOVEo_O楼主2022/10/31 21:58

我是不是又犯了什么弱智的错误,求调,谢谢

#include<bits/stdc++.h>
using namespace std;
int n,m,dx[]={1,-1,1,-1,1,-1,0,0},dy[]={0,0,1,-1,-1,1,1,-1};
char a[2005][2005];
namespace IO{
	char ibuf[(1<<20)+1],*iS,*iT;
	#if ONLINE_JUDGE
	#define gh() (iS==iT?iT=(iS=ibuf)+fread(ibuf,1,(1<<20)+1,stdin),(iS==iT?EOF:*iS++):*iS++)
 	#else
	#define gh() getchar()
	#endif
	#define reg register
	inline long long read(){
		reg char ch=gh();
		reg long long x=0;
		reg char t=0;
		while(ch<'0'||ch>'9')   t|=ch=='-',ch=gh();
		while(ch>='0'&&ch<='9') x=x*10+(ch^48),ch=gh();
		return t?-x:x;
	}
}
using IO::read;
void dfs(int x,int y)
{
   int i,x1,y1;
   
   for(i=0;i<8;i++)
   {
      x1=x+dx[i];
      y1=y+dy[i];
      if(x1>=1&&x1<=n&&y1>=1&&y1<=m&&a[x1][y1]=='*'){
      if(a[x1+1][y1]=='.'&&a[x1+1][y1+1]=='.'&&a[x1][y1+1]=='.')a[x1][y1]='.';
      if(a[x1+1][y1]=='.'&&a[x1+1][y1-1]=='.'&&a[x1][y1-1]=='.')a[x1][y1]='.';
      if(a[x1-1][y1]=='.'&&a[x1-1][y1+1]=='.'&&a[x1][y1+1]=='.')a[x1][y1]='.';
      if(a[x1-1][y1-1]=='.'&&a[x1-1][y1]=='.'&&a[x1][y1-1]=='.')a[x1][y1]='.'; 
      if(a[x1][y1]=='*')return;
         dfs(x1,y1);
      }
   }
}
int main()
{
   n=read(),m=read();
   for(int i=1;i<=n;i++)
      for(int j=1;j<=m;j++)
         cin>>a[i][j];
   for(int i=1;i<=n;i++)
      for(int j=1;j<=m;j++)
         if(a[i][j]=='*')dfs(i,j);
   for(int i=1;i<=n;i++){
      for(int j=1;j<=m;j++)cout<<a[i][j];
      puts("");
   }
   return 0;
}
2022/10/31 21:58
加载中...