40分求调
  • 板块P1189 SEARCH
  • 楼主parheps
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/23 10:32
  • 上次更新2024/10/23 14:39:20
查看原帖
40分求调
1403459
parheps楼主2024/10/23 10:32
/*parheps*/
#include<bits/stdc++.h>
#define ull unsigned long long
using namespace std;
int q,n,m; 
char a[55][55];
string d[1005];
bool vis[1005][55][55]; 
int x,y;
void dfs(int x,int y,int f,bool walk){
	
	if(!walk){vis[f][x][y]=1;
		dfs(x,y,f+1,1);
		if(f==q)a[x][y]='*';
		//cout<<"n"<<x<<" "<<y<<endl;
	}
	if(d[f]=="NORTH"&&(a[x-1][y]=='.'||a[x-1][y]=='*')&&vis[f+1][x-1][y]==0)dfs(x-1,y,f,0);
	else if(d[f]=="SOUTH"&&(a[x+1][y]=='.'||a[x+1][y]=='*')&&vis[f+1][x+1][y]==0)dfs(x+1,y,f,0);
    else if(d[f]=="EAST"&&(a[x][y+1]=='.'||a[x][y+1]=='*')&&vis[f+1][x][y+1]==0)dfs(x,y+1,f,0);
    else if(d[f]=="WEST"&&(a[x][y-1]=='.'||a[x][y-1]=='*')&&vis[f+1][x][y-1]==0)dfs(x,y-1,f,0);
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
	for(int j=1;j<=m;j++){
		cin>>a[i][j];
		if(a[i][j]=='*'){
		x=i;y=j;
		a[i][j]='.';
		}
	}
}
cin>>q;
for(int i=1;i<=q;i++){
	cin>>d[i];
}
dfs(x,y,1,0);
for(int i=1;i<=n;i++){
	for(int j=1;j<=m;j++){
		cout<<a[i][j];
	}
	cout<<endl;
	
}
return 0;
}
2024/10/23 10:32
加载中...