dalao救救,代码TLE+RE,整个人精神都要不正常了,查不出一点BUG
#include<bits/stdc++.h>
#define int long long
#define ci const int
#define elif else if
using namespace std;
ci e=51,E=1e3+10;
int n,m,k,stx,sty,vis[E][e][e],b[E];
char a[e][e];
void print(){
for(int i=1;i<=n;i++)cout<<a[i]+1<<'\n';
}
void dfs(int x,int y,int cou){
if(x<1||x>n||y<1||y>m||a[x][y]=='X'||vis[cou][x][y])return;
vis[cou][x][y]=1;
cout<<x<<' '<<y<<endl;
if(cou==k+1){
a[x][y]='*';
return;
}
int i=0;
while(++i){
if(b[cou]==1){
if(x-i>n||a[x-i][y]=='X')return;
dfs(x-i,y,cou+1);
}
elif(b[cou]==2){
if(x+i<1||a[x+i][y]=='X')return;
dfs(x+i,y,cou+1);
}
elif(b[cou]==3){
if(y+i>m||a[x][y+i]=='X')return;
dfs(x,y+i,cou+1);
}
else{
if(y-i<1||a[x][y-i]=='X')return;
dfs(x,y-i,cou+1);
}
}
}
signed main(){
ios::sync_with_stdio(0),
cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i]+1;
cin>>k;
for(int i=1;i<=k;i++){
string x;
cin>>x;
if(x=="NORTH")b[i]=1;
elif(x=="SOUTH")b[i]=2;
elif(x=="EAST")b[i]=3;
else b[i]=4;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i][j]=='*')stx=i,sty=j,a[i][j]='.';
//cout<<cra<<' '<<crb<<endl;
dfs(stx,sty,1);
print();
return 0;
}