提交时间:2025-10-14 15:24:24
运行 ID: 38502
#include<bits/stdc++.h> using namespace std; int kd[55][55][1005]; int n,m,k; char mp[55][55]; int main(){ //freopen("car.in","r",stdin); //freopen("car.out","w",stdout); scanf("%d%d",&n,&m); for(int i = 1;i<=n;i++){ for(int j = 1;j<=m;j++){ cin>>mp[i][j]; if(mp[i][j]=='*')kd[i][j][0]=1; } } scanf("%d",&k); for(int l = 1;l<=k;l++){ string op; cin>>op; if(op[0]=='W'){ for(int i = 1;i<=n;i++){ for(int j = 1;j<=m;j++){ if(mp[i][j]=='X')continue; for(int k =j+1;k<=m;k++){ if(mp[i][k]=='X')break; kd[i][j][l]|=kd[i][k][l-1]; } } } } if(op[0]=='E'){ for(int i = 1;i<=n;i++){ for(int j = 1;j<=m;j++){ if(mp[i][j]=='X')continue; for(int k =j-1;k>=1;k--){ if(mp[i][k]=='X')break; kd[i][j][l]|=kd[i][k][l-1]; } } } } if(op[0]=='N'){ for(int i = 1;i<=n;i++){ for(int j = 1;j<=m;j++){ if(mp[i][j]=='X')continue; for(int k =i+1;k<=n;k++){ if(mp[k][j]=='X')break; kd[i][j][l]|=kd[k][j][l-1]; } } } } if(op[0]=='S'){ for(int i = 1;i<=n;i++){ for(int j = 1;j<=m;j++){ if(mp[i][j]=='X')continue; for(int k =i-1;k>0;k--){ if(mp[k][j]=='X')break; kd[i][j][l]|=kd[k][j][l-1]; } } } } } for(int i = 1;i<=n;i++){ for(int j = 1;j<=m;j++){ if(kd[i][j][k])printf("*"); else if(mp[i][j]=='*')printf("."); else printf("%c",mp[i][j]); } printf("\n"); } // fclose(stdin); //fclose(stdout); } //O(KN^3)