1 条题解

  • 0
    @ 2021-12-05 16:52:37

    #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

警察找车(search,ls,256MB)

信息

ID
1010
难度
7
分类
(无)
标签
递交数
24
已通过
7
通过率
29%
上传者