奇葩的全WA,求助
  • 板块P1189 SEARCH
  • 楼主sszyyds
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/7/23 18:10
  • 上次更新2023/11/3 08:03:28
查看原帖
奇葩的全WA,求助
1018064
sszyyds楼主2023/7/23 18:10

感觉写的没太大问题,看过题解,没毛病,很离谱

附上代码

#include<iostream>
#include<cstdio>
#include<cmath>
#include<queue>
#include<ctime>
#include<map>
#include<stack>
#include<string>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define maxn 55
#define maxm 1005
using namespace std;

int read()
{
	int f=1,x=0;
	char ch=getchar();
	while(!isdigit(ch)) 
	{ 
	   if(ch=='-') 
	     f=-1;
	   ch=getchar();
	}
	while(isdigit(ch))
	{
	   x=x*10+ch-'0';
	   ch=getchar();
	}
	return f*x;
}

int n,m,k;
int mve[maxm];
char s[maxn][maxn];
char f[maxn][maxn];
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
bool v[maxm][maxn][maxn];

void in()
{
   n=read();
   m=read();
   for(int i=1;i<=n;i++)
	  scanf("%s",s[i]+1);
   k=read();
   for(int i=1;i<=k;i++)
   {
	  string s1;
	  getline(cin,s1);
	  if(s1=="EAST")
	    mve[i]=1;
	  else
	  if(s1=="SOUTH")
	    mve[i]=2;
	  else
	  if(s1=="WEST")
	    mve[i]=3;
   }
   return ;
}

void drow()
{
   for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
	{
	   f[i][j]=s[i][j];
	   if(s[i][j]=='*')
	     f[i][j]='.';
    }
   return ;
}

void dfs(int x,int y,int t)
{
   if(v[t][x][y]==true)
     return ;
   v[t][x][y]=true;
   if(t>k)
   {
	 f[x][y]='*';
	 return ;
   }
   int xx=x+dx[mve[t]],yy=y+dy[mve[t]];
   while(xx>0 && xx<=n && yy>0 && yy<=m)
   {
      if(s[xx][yy]=='X')
		break;
	  dfs(xx,yy,t+1);
	  xx+=dx[mve[t]];
	  yy+=dy[mve[t]];
   }
   return ;
}

int main()
{
    in();
	drow();
	for(int i=1;i<=n;i++)
	 for(int j=1;j<=m;j++)
	    if(s[i][j]=='*')
		{
		  dfs(i,j,1);
          for(int l=1;l<=n;l++)
			 printf("%s\n",f[l]+1);
		  return 0;
		}
	return 0;
}


2023/7/23 18:10
加载中...