5 条题解

  • 0
    @ 2022-3-25 20:58:52
    #include<iostream>  
    #include<cstring>  
    #include<cstdio>  
    using namespace std;  
    int sx[8]={1,1,1,0,0,-1,-1,-1};  
    int sy[8]={-1,0,1,-1,1,-1,0,1};  
    int x,y,mx,my,nowx,nowy,nowstep,head,tail,n,m,ans;  
    char s[105];  
    struct hp{  
        int x,y,step;  
    }queue[10005];  
    int a[105][105];   
    int main(){  
        scanf("%d%d%d%d\n",&n,&m,&mx,&my);  
        swap(n,m); swap(mx,my);  
        for (int i=1;i<=n;++i){  
            gets(s);  
            for (int j=1;j<=m;++j)  
              if (s[j-1]=='*') a[i][j]=1;  
        }  
        a[mx][my]=1;  
        head=0,tail=1,queue[tail].x=mx,queue[tail].y=my;  
        while (head<tail){  
            head++;  
            nowx=queue[head].x,nowy=queue[head].y,nowstep=queue[head].step;  
            for (int i=0;i<8;++i){  
                x=nowx+sx[i],y=nowy+sy[i];  
                if (x>0&&x<=n&&y>0&&y<=m&&!a[x][y]){  
                    a[x][y]=1;  
                    tail++;  
                    queue[tail].x=x,queue[tail].y=y;  
                    queue[tail].step=nowstep+1;  
                    ans=max(ans,queue[tail].step);  
                }  
            }  
        }  
        printf("%d",ans);  
    }
    

    信息

    ID
    100
    时间
    1000ms
    内存
    128MiB
    难度
    7
    标签
    递交数
    691
    已通过
    149
    上传者