30pts求救!!给关注!!
  • 板块P1189 SEARCH
  • 楼主封禁用户
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/26 13:17
  • 上次更新2023/11/26 15:28:00
查看原帖
30pts求救!!给关注!!
812424
封禁用户楼主2023/11/26 13:17
#include<bits/stdc++.h>
#include<map>
using namespace std;
int r,c,x,y;
string s[51],a[51];
void NORth(){
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			if(a[i][j]=='*'){
				if(a[i-1][j]=='X'||i-1==0){
					a[i][j]='.';
					continue;
				}
				for(int k=i-1;k>=1;k--){
					if(s[k][j]!='X'){
						a[k][j]='*';
					}else{
						break;
					}
				}
				a[i][j]='.';
			}
		}
	}
	/*for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			if(s[i][j]=='X'){
				a[i][j]='X';
			}if(a[i][j]!='X'&&a[i][j]!='*')a[i][j]='.';
			cout<<a[i][j];
		}
		cout<<endl;
	}*/
}
bool v[1001][1001];
void SOUth(){
	memset(v,0,sizeof(v));
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			if(a[i][j]=='*'){
				if(v[i][j]==1)continue;
				if(s[i+1][j]=='X'||i+1==r+1){
					a[i][j]='.';
					continue;
				}
			//	cout<<i<<" "<<j<<endl<<endl;
				for(int k=i+1;k<=r;k++){
					if(s[k][j]!='X'){
						a[k][j]='*';
						v[k][j]=1;
			//			cout<<k<< " "<<j<<endl;
					}else{
						break;
					}
				}
				a[i][j]='.';
			}
		}
	}
/*	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			if(s[i][j]=='X'){
				a[i][j]='X';
			}else if(a[i][j]!='X'&&a[i][j]!='*')a[i][j]='.';
			cout<<a[i][j];
		}
		cout<<endl;
	}*/
}
void EASt(){
	memset(v,0,sizeof(v));
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
//			cout<<a[i][j];
			if(a[i][j]=='*'){
				if(v[i][j]==1)continue;
				if(s[i][j+1]=='X'||j+1==c+1){
					a[i][j]='.';
					continue;
				}
				
				for(int k=j+1;k<=c;k++){
					if(s[i][k]!='X'){
						a[i][k]='*';
						v[i][k]=1;
					}else{
						break;
					}
				}
				a[i][j]='.';
			}
		}
//		cout<<'\n';
	}
/*	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			if(s[i][j]=='X'){
				a[i][j]='X';
			}if(a[i][j]!='X'&&a[i][j]!='*')a[i][j]='.';
			cout<<a[i][j];
		}
		cout<<endl;
	}*/
}
void WESt(){
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			if(a[i][j]=='*'){
				if(s[i][j-1]=='X'||j-1==0){
					a[i][j]='.';
					continue;
				}
				for(int k=j-1;k>=1;k--){
					if(s[i][k]!='X'){
						a[i][k]='*';
					}else{
						break;
					}
				}
				a[i][j]='.';
			}
		}
	}
/*	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			if(s[i][j]=='X'){
				a[i][j]='X';
			}if(a[i][j]!='X'&&a[i][j]!='*')a[i][j]='.';
			cout<<a[i][j];
		}
		cout<<endl;
	}*/
}string f;
int n;
int main() {
	cin>>r>>c;
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			cin>>s[i][j];
			a[i][j]=s[i][j]; 
		}
	}
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>f;
		if(f=="NORTH"){
			NORth();
		}else if(f=="WEST"){
			WESt();
		}else if(f=="EAST"){
			EASt();
		}else{
			SOUth();
		}
	}
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			if(s[i][j]=='X'){
				a[i][j]='X';
			}if(a[i][j]!='X'&&a[i][j]!='*')a[i][j]='.';
			cout<<a[i][j];
		}
		cout<<endl;
	}
	return 0;
}
2023/11/26 13:17
加载中...