样例求
  • 板块P1189 SEARCH
  • 楼主Waterwzy
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/6/2 16:47
  • 上次更新2023/11/4 22:23:11
查看原帖
样例求
388829
Waterwzy楼主2021/6/2 16:47

dfs样例都过不了……

#include<bits/stdc++.h>
using namespace std;
int m,n,bs,x,y;
char a[52][52];
string b[1002];
void dfs(int sp,int x,int y){
	if(x<1||y<1||x>n||y>m||a[x][y]=='X')return;
	if(sp==bs)a[x][y]='*';
	if(b[sp]=="NORTH"){
		dfs(sp,x,y-1);
		if(b[sp+1]=="SOUTH")dfs(sp+1,x,y+1);
		if(b[sp+1]=="WEST")dfs(sp+1,x-1,y);
		if(b[sp+1]=="EAST")dfs(sp+1,x+1,y);
		return;
	}
	if(b[sp]=="SOUTH"){
		dfs(sp,x,y+1);
		if(b[sp+1]=="NORTH")dfs(sp+1,x,y-1);
		if(b[sp+1]=="WEST")dfs(sp+1,x-1,y);
		if(b[sp+1]=="EAST")dfs(sp+1,x+1,y);
		return;
	}
	if(b[sp]=="WEST"){
		dfs(sp,x-1,y);
		if(b[sp+1]=="NORTH")dfs(sp+1,x,y-1);
		if(b[sp+1]=="SOUTH")dfs(sp+1,x,y+1);
		if(b[sp+1]=="EAST")dfs(sp+1,x+1,y);
		return;
	}
	if(b[sp]=="EAST"){
		dfs(sp,x+1,y);
		if(b[sp+1]=="NORTH")dfs(sp+1,x,y-1);
		if(b[sp+1]=="SOUTH")dfs(sp+1,x,y+1);
		if(b[sp+1]=="WEST")dfs(sp+1,x-1,y);
		return;
	}

}
int main(){
	cin>>m>>n;
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			cin>>a[j][i];
			if(a[j][i]=='*')x=j,y=i,a[j][i]='.';
		}
	}
	cin>>bs;
	for(int i=1;i<=bs;i++)cin>>b[i];
	dfs(1,x,y);
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			cout<<a[j][i];
		}
		cout<<endl;
	}
	return 0;
}
2021/6/2 16:47
加载中...