提交时间:2025-10-15 18:37:15
运行 ID: 38520
#include<bits/stdc++.h> using namespace std; #define int long long int n,m,k; char mp[55][55]; bool vis[55][55][55]; int op[1005]; int fx,fy; void dfs(int st,int x,int y){ if(st>k){ mp[x][y]='*'; return; } if(vis[st][x][y]==1)return; vis[st][x][y]=1; if(op[st]==0){ for(int nx=x-1;nx>=1;nx--){ if(mp[nx][y]=='X')break; dfs(st+1,nx,y); } } else if(op[st]==1){ for(int nx=x+1;nx<=n;nx++){ if(mp[nx][y]=='X')break; dfs(st+1,nx,y); } } else if(op[st]==2){ for(int ny=y-1;ny>=1;ny--){ if(mp[x][ny]=='X')break; dfs(st+1,x,ny); } } else{ for(int ny=y+1;ny<=m;ny++){ if(mp[x][ny]=='X')break; dfs(st+1,x,ny); } } } signed main(){ // freopen("car.in","r",stdin); // freopen("car.out","w",stdout); cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>mp[i][j]; if(mp[i][j]=='*'){ fx=i;fy=j; mp[i][j]='.'; } } } cin>>k; for(int i=1;i<=k;i++){ string s; cin>>s; if(s=="NORTH")op[i]=0; else if(s=="SOUTH")op[i]=1; else if(s=="WEST")op[i]=2; else op[i]=3; } dfs(1,fx,fy); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cout<<mp[i][j]; } printf("\n"); } // fclose(stdin); // fclose(stdout); return 0; }