zoukankan      html  css  js  c++  java
  • poj 2251 Dungeon Master

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<queue>
    using namespace std;
    
    int k,n,m;
    char s[40][40][40];
    int use[40][40][40];
    int dx[]= {0,0,1,-1,0,0};
    int dy[]= {1,-1,0,0,0,0};
    int dz[]= {0,0,0,0,1,-1};
    struct data
    {
        int x,y,z,t;
    } t1,t0;
    
    queue<data>q;
    
    int bfs(int sx,int sy,int sz)
    {
        int i,j,flag=0;
        while(!q.empty()) q.pop();
        t0.x=sx;
        t0.y=sy;
        t0.z=sz;
        t0.t=0;
        q.push(t0);
        while(!q.empty())
        {
            t1=q.front();
            q.pop();
            if(s[t1.z][t1.x][t1.y]=='E')
            {
                flag=t1.t;
                break;
            }
            for(i=0; i<6; i++)
            {
                t0.x=t1.x+dx[i];
                t0.y=t1.y+dy[i];
                t0.z=t1.z+dz[i];
                t0.t=t1.t+1;
                if(t0.x<0||t0.x>=n||t0.y<0||t0.y>=m||t0.z<0||t0.z>=k) continue;
                if(s[t0.z][t0.x][t0.y]=='#') continue;
    
                if(t0.t<use[t0.z][t0.x][t0.y]||use[t0.z][t0.x][t0.y]==0)
                {
                    q.push(t0);
                    use[t0.z][t0.x][t0.y]=t0.t;
                }
            }
        }
        return flag;
    }
    
    int main()
    {
        int i,j,p,sx,sy,sz;
        while(~scanf("%d%d%d",&k,&n,&m))
        {
            if(k==0&&n==0&&m==0) break;
            //getchar();
            for(p=0; p<k; p++)
            {
                for(i=0; i<n; i++)
                {
                    scanf("%s",s[p][i]);
                    for(j=0; j<n; j++)
                    {
    
                        if(s[p][i][j]=='S')
                        {
                            sx=i;sy=j;sz=p;
                        }
                    }
                    //getchar();
                }
                //getchar();
            }
            memset(use,0,sizeof(use));
            int f=bfs(sx,sy,sz);
            if(f>0) printf("Escaped in %d minute(s).
    ",f);
            else printf("Trapped!
    ");
        }
        return 0;
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

  • 相关阅读:
    IaaS、PaaS、SaaS
    hyper-V 配置
    解决linux下创建用户时出现Creating mailbox file: File exists
    iframe层级关系调用
    js,jq新增元素 ,on绑定事件无效
    js中!和!!的区别与用法
    form表单禁止button 提交
    Thinkphp5终端创建控制器和模型
    TP5的目录常量和路径
    sublime安装package controlller
  • 原文地址:https://www.cnblogs.com/xryz/p/4847923.html
Copyright © 2011-2022 走看看