0分求调
  • 板块P1189 SEARCH
  • 楼主xbw2024
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/20 15:07
  • 上次更新2024/8/20 16:47:59
查看原帖
0分求调
1366176
xbw2024楼主2024/8/20 15:07
#include<bits/stdc++.h>
using namespace std;
long long sx,sy,n,m,t,dx[5]={0,-1,1,0,0},dy[5]={0,0,0,-1,1},vis[10001];
bool s[110][110][2010]={false};
char a[101][101];
void dfs(int stp,int xx,int yy,bool flag){
	if(xx<1|| yy<1 || xx>n || yy>m || stp>t || s[xx][yy][stp] || a[xx][yy]=='X'){
		return;
	} 
	if(stp==t){
		a[xx][yy]='*';
	} 
	dfs(stp,xx+dx[vis[stp]],yy+dy[vis[stp]],true);
	if(flag){
		dfs(stp+1,xx+dx[vis[stp+1]],yy+dy[vis[stp+1]],true);
	} 
	s[xx][yy][stp]=true;
	
}
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]=='*'){
				sx=i;
				sy=j;
				a[i][j]='.';
			}
		}
	}
	cin>>t;
	for(int i=1;i<=t;i++){
		string s;
		cin>>s;
		switch(s[0]){
			case 'N':{
				vis[i]=1; 
				break;
			}case 'S':{
				vis[i]=2;
				break;
			}
			case 'W':{
				vis[i]=3;
				break;
			}default:{
				vis[i]=4;
			} 
		}
	}
	dfs(1,sx,sy,false);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}
2024/8/20 15:07
加载中...