1 条题解
-
0Guest LV 0
-
0
#include<iostream>
#include<cstring>
using namespace std;
const int N=51;
int n,m,r,b[1001];
char a[N][N];
int dx[5]={0,-1,1,0,0},dy[5]={0,0,0,-1,1};
struct node
{
int x,y,num;
}h[N*N];
bool check(int x,int y)
{
if(x>=1&&x<=n&&y>=1&&y<=m)
{
return 1;
}
return 0;
}
void sb(int x,int y)
{
int head=0,tail=1;
h[1].x=x;
h[1].y=y;
h[1].num=1;
while(head<tail)
{
head++;
int oh=0;
while(1)
{
oh++;
int xx=h[head].x+dx[b[h[head].num]]*oh,yy=h[head].y+dy[b[h[head].num]]*oh;
if(check(xx,yy)&&a[xx][yy]!='X'&&h[tail].num<=r)
{
tail++;
h[tail].x=xx,h[tail].y=yy;
h[tail].num=h[head].num+1;
if(h[tail].num>r)
{
a[xx][yy]='*';
}
}
else break;
}
}
}
int main()
{
int x1,y1;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
if(a[i][j]=='*')
{
x1=i,y1=j;
a[i][j]='.';
}
}
}
cin>>r;
for(int i=1;i<=r;i++)
{
string c;
cin>>c;
if(c[0]=='N')
{
b[i]=1;
}
else if(c[0]=='S')
{
b[i]=2;
}
else if(c[0]=='W')
{
b[i]=3;
}
else if(c[0]=='E')
{
b[i]=4;
}
}
sb(x1,y1);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cout<<a[i][j]<<' ';
}
cout<<endl;
}
return 0;
}//好好用
- 1
信息
- ID
- 1010
- 难度
- 7
- 分类
- (无)
- 标签
- 递交数
- 24
- 已通过
- 7
- 通过率
- 29%
- 上传者