求助
  • 板块P1189 SEARCH
  • 楼主xbb2
  • 当前回复4
  • 已保存回复4
  • 发布时间2020/8/10 10:53
  • 上次更新2023/11/6 20:46:55
查看原帖
求助
174806
xbb2楼主2020/8/10 10:53
#include<bits/stdc++.h>
using namespace std;
int x,y;
int n;
int r,c;
char a[60][60];
bool mp[60][60];
char f[1005];
const char N='N';
const char S='S';
const char W='W';
const char E='E';
struct wz{
	int i;
	int j;
};
bool zq(int x,int y){
	if(x<=r&&x>=1&&y<=c&&y>=1){
		return true;
	}
	else{
		return false;
	}
}
void bfs(){
	queue<wz> q;
	wz l;
	l.i =x;
	l.j =y;
	q.push(l);
	int lever=1;
	while(lever<=n){
		int len=q.size();
		for(int i=0;i<len;i++){
			l=q.front();
			q.pop();
			int x1=l.i;
			int y1=l.j;
			mp[x1][y1]=false;
			if(f[lever]==N){
				x1--;
				while(a[x1][y1]!='X'&&zq(x1,y1)){
					l.i--;
					x1--;
					//if(mp[x1][y1]==false){
						q.push(l);
						mp[x1][y1]=true;
					//}
				}
			}
			else if(f[lever]==S){
				x1++;
				while(a[x1][y1]!='X'&&zq(x1,y1)){
					l.i++;
					x1++;
					//if(mp[x1][y1]==false){
						q.push(l);
						mp[x1][y1]=true;
					//}
				}
			}
			else if(f[lever]==W){
				y1--;
				while(a[x1][y1]!='X'&&zq(x1,y1)){
					l.j--;
					y1--;
					//if(mp[x1][y1]==false){
						q.push(l);
						mp[x1][y1]=true;
					//}
				}
			}
			else if(f[lever]==E){
				y1++;
				while(a[x1][y1]!='X'&&zq(x1,y1)){
					l.j++;
					y1++;
					//if(mp[x1][y1]==false){
						q.push(l);
						mp[x1][y1]=true;
					//}
				}
			}
		}
		lever++;
	}
	while(q.size()>0){
		l=q.front();
		q.pop();
		a[l.i][l.j]='*';
	}
}
int main(){
	scanf("%d%d",&r,&c);
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			cin>>a[i][j];
			if(a[i][j]=='*'){
				x=i;
				y=j;
				a[x][y]='.';
			}
		}
	}
	for(int i=1;i<=50;i++){
		for(int j=1;j<=50;j++){
			mp[i][j]=false;
		}
	}
	cin>>n;
	string l;
	for(int i=1;i<=n;i++){
		cin>>l;
		if(l=="NORTH"){
			f[i]='N';
		}
		if(l=="SOUTH"){
			f[i]='S';
		}
		if(l=="WEST"){
			f[i]='W';
		}
		if(l=="EAST"){
			f[i]='E';
		}
	}
	bfs();
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			printf("%c",a[i][j]);
		}
		printf("\n");
	}
	return 0;
}
2020/8/10 10:53
加载中...