90蒟蒻求助QWQ
  • 板块P1189 SEARCH
  • 楼主lk323232
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/9/28 11:20
  • 上次更新2023/10/27 09:41:04
查看原帖
90蒟蒻求助QWQ
504237
lk323232楼主2022/9/28 11:20
#include<bits/stdc++.h>
using namespace std;
int n,m,k,a[10001],vis[1001][52][51];
int dx[5]={0,-1,0,1,0};
int dy[5]={0,0,1,0,-1};
char mp[1001][1001],ans[1001][1001];
string fx;
void dfs(int x,int y,int deep){
	if(vis[deep][x][y]) return ;
	vis[deep][x][y]=1;
	if(deep==k+1){
		ans[x][y]='*';
		return ;
	}
	int s=1;
	while(x+s*dx[a[deep]]<=n&&x+s*dx[a[deep]]>0&&y+s*dy[a[deep]]<=m&&y+s*dy[a[deep]]>0&&mp[x+s*dx[a[deep]]][y+s*dy[a[deep]]]!='X'){
		if(mp[x+s*dx[a[deep]]][y+s*dy[a[deep]]]=='.')
		dfs(x+s*dx[a[deep]],y+s*dy[a[deep]],deep+1);
		s++;
	}
	
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;++i)
		for(int j=1;j<=m;++j)
			cin>>mp[i][j],ans[i][j]=mp[i][j];
	cin>>k;
	for(int i=1;i<=k;++i){
		cin>>fx;
		if(fx=="NORTH") a[i]=1;
		else if(fx=="EAST") a[i]=2;
		else if(fx=="SOUTH") a[i]=3;
		else a[i]=4;
	}
	for(int i=1;i<=n;++i){
		for(int j=1;j<=m;++j){
			if(mp[i][j]=='*'){
				mp[i][j]='.';
				ans[i][j]='.';
				dfs(i,j,1);
			}			
		}
	}
	for(int i=1;i<=n;++i){
		for(int j=1;j<=m;++j){
				cout<<ans[i][j];
		}		
		cout<<endl;
	}	
	return 0;
}
2022/9/28 11:20
加载中...