zoukankan      html  css  js  c++  java
  • Dungeon Master

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<cmath>
     4 #include<cstdlib>
     5 #include<queue>
     6 #include<algorithm>
     7 #define MAXN 40
     8 using namespace std;
     9 
    10 char map[MAXN][MAXN][MAXN];
    11 bool vis[MAXN][MAXN][MAXN];
    12 int s[][10]= {{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
    13 int ex,ey,ez,sx,sy,sz,zz,yy,xx,l,r,c,k;
    14 struct node
    15 {
    16     int x,y,z;
    17     int step;
    18 }st,st1;
    19 
    20 void bfs(int x,int y,int z)
    21 {
    22     memset(vis,false,sizeof(vis));
    23     queue<node>q;
    24     st.x=x;
    25     st.y=y;
    26     st.z=z;
    27     st.step=0;
    28     q.push(st);
    29     vis[z][x][y]=true;
    30     while(!q.empty())
    31     {
    32         st1=q.front();
    33         q.pop();
    34         if(st1.x==ex&&st1.y==ey&&st1.z==ez) {k=st1.step;return;}
    35         for(int i=0; i<6; i++)
    36         {
    37             zz=st1.z+s[i][0];
    38             xx=st1.x+s[i][1];
    39             yy=st1.y+s[i][2];
    40             if((zz>=0&&xx>=0&&yy>=0&&zz<l&&xx<r&&yy<c)&&map[zz][xx][yy]!='#'&&!vis[zz][xx][yy])
    41             {
    42                 st.x=xx;
    43                 st.y=yy;
    44                 st.z=zz;
    45                 st.step=st1.step+1;
    46                 q.push(st);
    47                 vis[zz][xx][yy]=true;
    48             }
    49         }
    50     }
    51 }
    52 int main()
    53 {
    54     while(scanf("%d%d%d",&l,&r,&c)!=EOF)
    55     {
    56         k=0;
    57         if(l==0&&r==0&&c==0) break;
    58         for(int i=0; i<l; i++)
    59         {
    60             for(int j=0; j<r; j++)
    61             {
    62                 scanf("%s",map[i][j]);
    63                 getchar();
    64                 for(int k=0; k<c; k++)
    65                 {
    66                     if(map[i][j][k]=='S')
    67                     {
    68                         sz=i;
    69                         sx=j;
    70                         sy=k;
    71                     }
    72                     else if(map[i][j][k]=='E')
    73                     {
    74                         ez=i;
    75                         ex=j;
    76                         ey=k;
    77                     }
    78                 }
    79             }
    80             getchar();
    81         }
    82         bfs(sx,sy,sz);
    83         if(k==0)
    84             printf("Trapped!
    ");
    85         else
    86             printf("Escaped in %d minute(s).
    ",k);
    87     }
    88     //system("pause");
    89     return 0;
    90 }
    View Code
  • 相关阅读:
    MVC添加
    bootstrap mvc
    mvc对象转成JSON格式
    乐观锁、悲观锁
    DOCKER上安装HASSIO
    Hass.io: add-on Samba
    Hass.io: add-on Configurator
    Lubuntu安装屏幕键盘onboard,使触摸屏可以登录和输入
    Dell Venue 8 Pro启动盘UEFI模式32位启动,备份系统
    屏幕录像软件Bandicam和oCam
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3282065.html
Copyright © 2011-2022 走看看