本地把前两个样例下下来 都过了,提上去全wa
蒟蒻求助
#include<bits/stdc++.h>
#define int long long
const int N=60;
using namespace std;
char mp[N][N];
int fx[10005],fy[10005],n,m,t;
bool vis[10005][N][N];
void dfs(int dep,int x,int y){
if(vis[dep][x][y] || dep>t) return;
vis[dep][x][y]=true;
int tx=x+fx[dep],ty=y+fy[dep];
while(tx>=1 && tx<=n && ty>=1 && ty<=m && mp[tx][ty]!='X'){
if(dep==t) mp[tx][ty]='*';
else dfs(dep+1,tx,ty);
tx+=fx[dep],ty+=fy[dep];
}
return;
}
signed main(){
int mx,my;scanf("%d%d",&n,&m);
memset(vis,false,sizeof(vis));
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
scanf("%c",&mp[i][j]);
while(mp[i][j]=='\n')scanf("%c",&mp[i][j]);
if(mp[i][j]=='*') mp[i][j]='.',mx=i,my=j;
}
scanf("%d",&t);
while(char(t)=='\n')scanf("%d",&t);
for(int i=1;i<=t;i++){
string s;cin>>s;
if(s=="NORTH") fx[i]=-1;
if(s=="SOUTH") fx[i]=1;
if(s=="WEST") fy[i]=-1;
if(s=="EAST") fy[i]=1;
}
dfs(1,mx,my);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++) printf("%c",mp[i][j]);
printf("\n");
}
return 0;
}