1 条题解

  • 0
    @ 2020-06-21 17:35:49

    出题人标程,没考虑无解(((
    数组记得开大点。
    ```
    #include <iostream>
    #include <cstdio>

    #define maxn 100
    using namespace std;

    int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
    char a[maxn][maxn];
    bool vis[maxn][maxn];
    int n,m;
    int step,l,r;

    struct node
    {
    int x,y,step;
    }c[maxn * maxn];

    void s()
    {
    int newx,newy,newstep;
    int x,y;
    r=1;
    l=1;
    c[r].x=1;c[l].y=1;c[1].step=1;
    while(r<=l)
    {
    newx=c[r].x;newy=c[r].y;newstep=c[r].step;
    for(int i=0;i<4;i++)
    {
    x=newx+dx[i];
    y=newy+dy[i];
    if(x>0&&x<=n&&y>0&&y<=m&&a[x][y]!='#'&&!vis[x][y])
    {
    l++;
    vis[x][y]=true;
    c[l].x=x;c[l].y=y;c[l].step=newstep+1;
    if(x==n&&y==m)
    {
    printf("%d\n",newstep+1);
    return ;
    }
    }
    }
    r++;
    }
    }

    int main()
    {
    ios::sync_with_stdio(false);
    // freopen("5.in","r",stdin);
    // freopen("5.out","w",stdout);
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    cin>>a[i][j];
    s();
    return 0;
    }
    ```

  • 1

信息

ID
1022
难度
8
分类
(无)
标签
(无)
递交数
21
已通过
5
通过率
24%
上传者