疑似STL爆炸求助
  • 板块P1189 SEARCH
  • 楼主Lube
  • 当前回复0
  • 已保存回复0
  • 发布时间2020/10/18 16:59
  • 上次更新2023/11/5 10:28:12
查看原帖
疑似STL爆炸求助
118630
Lube楼主2020/10/18 16:59
#include<bits/stdc++.h>
using namespace std;
map<string,int>fx;
map<pair<pair<int,int>,int>,bool>vis;
char mapp[55][55];
int dx[]={-1,1,0,0};//shang xia zuo you
int dy[]={0,0,-1,1};
int data[1005],n,m;
void dfs(int x,int y,int cnt,int walk)
{
//	printf("%d %d %d %d\n",x,y,cnt,walk);getchar();
	if(cnt>n){mapp[x][y]='*';return;}
	pair<pair<int,int>,int>zt;
	zt.first.first=x;zt.first.second=y;zt.second=cnt;
	vis[zt]=1;
	for(int i=1;;i++)
	{
		int nx,ny;
		nx=x+dx[data[cnt]]*i;
		ny=y+dy[data[cnt]]*i;
		if(nx>n||nx<1||ny>m||ny<1)break;
		if(mapp[nx][ny]=='X')break;
        zt.first.first=nx;zt.first.second=ny;
		if(vis[zt]==true)break;
		dfs(nx,ny,cnt,walk+i);
	}
	if(walk)dfs(x,y,cnt+1,0);
}
int main()
{
    fx["NORTH"]=0;fx["SOUTH"]=1;fx["WEST"]=2;fx["EAST"]=3;
	scanf("%d%d",&n,&m);int nn;nn=n;
    for(int i=1;i<=n;i++)scanf("%s",mapp[i]+1);
    scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		string s;cin>>s;data[i]=fx[s];
	}
	for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(mapp[i][j]=='*'){mapp[i][j]='.';dfs(i,j,1,0);break;}
	for(int i=1;i<=nn;i++)
	{
		for(int j=1;j<=m;j++)printf("%c",mapp[i][j]);printf("\n");
	}
}
2020/10/18 16:59
加载中...