Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
38538 wxy 【J】T3 C++ 通过 100 3 MS 5464 KB 2416 2025-10-15 19:21:52

Tests(10/10):


#include<bits/stdc++.h> using namespace std; const int N=55; const int K=1e3+5; int n,m,k; char ma[N][N]; bool dp[K][N][N]; int to[K]; int cal(string s){ if(s=="EAST"){ return 1; }else if(s=="WEST"){ return 2; }else if(s=="SOUTH"){ return 3; }else if(s=="NORTH"){ return 4; } } void cal1(int now){ for(int j=1;j<=m;j++){ for(int i=1;i<=n;i++){ if(ma[i][j]=='X'){ dp[now][i][j]=0; continue; } dp[now][i][j]=max(dp[now-1][i][j-1],dp[now][i][j-1]); } } } void cal2(int now){ for(int j=m;j>=1;j--){ for(int i=1;i<=n;i++){ if(ma[i][j]=='X'){ dp[now][i][j]=0; continue; } dp[now][i][j]=max(dp[now-1][i][j+1],dp[now][i][j+1]); } } } void cal3(int now){ for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(ma[i][j]=='X'){ dp[now][i][j]=0; continue; } dp[now][i][j]=max(dp[now-1][i-1][j],dp[now][i-1][j]); } } } void cal4(int now){ for(int i=n;i>=1;i--){ for(int j=1;j<=m;j++){ if(ma[i][j]=='X'){ dp[now][i][j]=0; continue; } dp[now][i][j]=max(dp[now-1][i+1][j],dp[now][i+1][j]); } } } int main(){ cin>>n>>m; int sx,sy; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>ma[i][j]; if(ma[i][j]=='*'){ dp[0][i][j]=1; sx=i,sy=j; ma[i][j]='.'; }else{ dp[0][i][j]=0; } } } scanf("%d",&k); for(int i=1;i<=k;i++){ string s; cin>>s; to[i]=cal(s); } for(int now=1;now<=k;now++){ if(to[now]==1){ cal1(now); }else if(to[now]==2){ cal2(now); }else if(to[now]==3){ cal3(now); }else{ cal4(now); } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(dp[k][i][j]==1){ cout<<"*"; }else{ cout<<ma[i][j]; } } printf("\n"); } return 0; }


测评信息: