zoukankan      html  css  js  c++  java
  • 40分代码在线求找错

     

    P1248链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1248

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    int cs, a, b, stx, sty, stz, edx, edy, edz;
    char mp[45][45][45];
    struct node{
        int x, y, z, step;
    };
    int fx, fy, fz, fstep;
    bool f;
    node que[2500];
    int front, rear;
    int dir[6][3]={{-1,0,0},{1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
    void bfs()
    {
        front=rear=1;
        que[rear].x=stx;  que[rear].y=sty,que[rear].z=stz; 
        que[rear].step=0;
        mp[stx][sty][stz]='#';
        while(front<=rear){
            fx=que[front].x; fy=que[front].y; fz=que[front].z; fstep=que[front].step; 
            if(fx==edx && fy==edy && fz==edz){
                cout<<"Escaped in "<<fstep<<" minute(s)."<<endl;
                f=1;
                break;
            }
            for(int i=0; i<6; i++){
                int nx=fx+dir[i][0];
                int ny=fy+dir[i][1];
                int nz=fz+dir[i][2];
                if(nx>=0 && nx<cs && ny>=0 && ny<a && nz>=0 && ny<b && mp[nx][ny][nz]=='.'){
                    mp[nx][ny][nz]='#';
                    rear++;                        
                    que[rear].x=nx;                
                    que[rear].y=ny;   
                    que[rear].z=nz;             
                    que[rear].step=fstep+1;        
                }
            }
            front++;                           
        }
    }
    int main()
    {
        while(1){
            f=0;
            cin>>cs>>a>>b;
            if(cs==0 && a==0 && b==0) break;
            for(int i=0; i<cs; i++){
                for(int j=0;j<a;j++) cin>>mp[i][j];
            }
            for(int i=0;i<cs;i++){
                for(int j=0;j<a;j++){
                    for(int k=0;k<b;k++){
                        if(mp[i][j][k]=='S'){
                            stx=i,sty=j,stz=k;
                        }
                        if(mp[i][j][k]=='E'){
                            edx=i,edy=j,edz=k;
                            mp[i][j][k]='.';
                        }
                    }
                }
            }
            bfs();
            if(f==0) 
                cout<<"Trapped!"<<endl;
        }
        return 0;
     }
  • 相关阅读:
    Js时间处理
    Css 显示删除条目效果
    vue权限控制菜单显示的简单实现
    js取对象的属性值循环
    标题的内容响应式设计
    将一个字符串当做一个方法名或对象的key
    JSON序列化和解析
    import 与export详解
    使用flask-mail扩展发送邮件
    正则表达式练习-计算器实现
  • 原文地址:https://www.cnblogs.com/Wag-Ho/p/13777064.html
Copyright © 2011-2022 走看看