求救!!!
查看原帖
求救!!!
180967
改名避牛马楼主2021/11/14 20:57
#include<bits/stdc++.h>
using namespace std;
int n,m,q;
char ch[60][60],ans[60][60];
char a[1010];
struct two
{
	int x;
	int y;
};
queue <two> qq;
void dos(int x)
{
    
	two t[4000];
	int jsq=0;
	while(!qq.empty())
	{
		t[++jsq].x=qq.front().x;
		t[jsq].y=qq.front().y;
		qq.pop();
		ans[t[jsq].x][t[jsq].y]='.';
	}
	if(x==1)
	for(int i=1;i<=jsq;i++)
	{
		int nx=t[i].x;
		int ny=t[i].y;
		nx-=1;
		while(ch[nx][ny]!='X'&&nx>=1&&nx<=n)
		{
			qq.push((two){nx,ny});
			ans[nx--][ny]='*';
		}
	} 
	else if(x==2)
	for(int i=1;i<=jsq;i++)
	{
		int nx=t[i].x;
		int ny=t[i].y; 
		nx+=1;
		while(ch[nx][ny]!='X'&&nx<=n&&nx>=1)
		{
			qq.push((two){nx,ny});
			ans[nx][ny]='*';
		    nx+=1;
		}
	}
	else if(x==3)
	for(int i=1;i<=jsq;i++)
	{
		int nx=t[i].x;
		int ny=t[i].y-1;
		while(ch[nx][ny]!='X'&&ny>=1&&ny<=m)
		{
			qq.push((two){nx,ny});
			ans[nx][ny]='*';
		    ny-=1;
		}
	}
	
	else
	for(int i=1;i<=jsq;i++)
	{
		int nx=t[i].x;
		int ny=t[i].y+1;
		while(ch[nx][ny]!='X'&&ny<=m&&ny>=1)
		{
			qq.push((two){nx,ny});
			ans[nx][ny]='*';
		    ny+=1;
		}
	}
    return;
}
void work(int s)
{
	if(a[s]=='N')
	{
		dos(1);
	}
	else if(a[s]=='S')
	{
		dos(2);
	}
	else if(a[s]=='W')
	{
		dos(3);
	}
	else dos(4);
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>ch[i][j];
			ans[i][j]=ch[i][j];
			if(ch[i][j]=='*')
			{
				qq.push((two){i,j});
			}
		}
	}
	string st;
	cin>>q;
	for(int i=1;i<=q;i++)
	{
		cin>>st;
		a[i]=st[0];
	}
	int x,y;
	for(int i=1;i<=q;i++)
	{
		work(i);
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			printf("%c",ans[i][j]);
		}
		printf("\n");
	}
	 
	return 0;
}

只对了三个点,有无大佬帮忙看看哪里挂了!

2021/11/14 20:57
加载中...