求助,互关
  • 板块P1189 SEARCH
  • 楼主sillation
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/21 20:29
  • 上次更新2025/6/21 12:23:32
查看原帖
求助,互关
1045165
sillation楼主2024/9/21 20:29
#include<bits/stdc++.h>
using namespace std;
int to[1010];
char mp[55][55];
bool v[1010][55][55];
int n,m,g,sx,sy;
string ss;
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
void dfs(int dep,int x,int y){
	if(v[dep][x][y])return ;
	v[dep][x][y]=1;
	if(dep==0)return ;
	while(1){
		x+=dx[to[dep]],y+=dy[to[dep]];
    	if(mp[x][y]=='X'||x<1||x>n||y<1||y>m) break;
    	dfs(dep-1,x,y);
	}
	return ;
}
int main(){
	cin>>n>>m;	
	for(int i=1;i<=n;i++){
		scanf("\n");
		for(int j=1;j<=m;j++){
			mp[i][j]=getchar();
			if(mp[i][j]=='*')mp[i][j]='.',sx=i,sy=j;
		}
	}
	cin>>g;
	for(int i=g;i>=1;i--){
		scanf("\n");
		cin>>ss;
		if(ss[0]=='S')to[i]=0;
		else if(ss[0]=='E')to[i]=1;
		else if(ss[0]=='N') to[i]=2;
		else to[i]=3;
	}
	dfs(g,sx,sy);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(v[0][i][j]==1)cout<<'*';
			else cout<<mp[i][j];
			//cout<<v[0][i][j];
		}
		cout<<endl;
	}
	return 0;
}

2024/9/21 20:29
加载中...