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

    题目:http://poj.org/problem?id=2251

    简单三维 bfs不解释, 1A,     上代码

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cstdlib>
     5 #include<stack>
     6 #include<queue>
     7 #include<iomanip>
     8 #include<cmath>
     9 #include<map>
    10 #include<vector>
    11 #include<algorithm>
    12 using namespace std;
    13 
    14 int a,b,c;
    15 int vis[50][50][50],G[50][50][50];
    16 int dx[6]={0,0,0,0,-1,1};
    17 int dy[6]={0,0,1,-1,0,0};
    18 int dz[6]={1,-1,0,0,0,0};
    19 struct node
    20 {
    21     int l,r,c,step;
    22 }e,s,pos,next;
    23 int bfs(int l,int r,int c)
    24 {
    25     int i;
    26     queue<node>q;
    27     next.l=l; next.r=r; next.c=c; next.step=0;
    28     vis[l][r][c]=1;
    29     q.push(next);
    30     while(!q.empty())
    31     {
    32         pos=q.front();
    33         q.pop();
    34         for(i=0; i<6; i++)
    35         {
    36             next.l=pos.l+dx[i]; next.r=pos.r+dy[i];
    37             next.c=pos.c+dz[i]; next.step=pos.step+1;
    38             if(!vis[next.l][next.r][next.c]&&G[next.l][next.r][next.c])
    39             {
    40                 vis[next.l][next.r][next.c]=1;
    41                 q.push(next);
    42             }
    43             if(next.l==s.l&&next.r==s.r&&next.c==s.c)
    44             return next.step;
    45         }
    46     }
    47     return -1;
    48 }
    49 int main()
    50 {
    51     int i,j,k,x;
    52     char ch;
    53     while(cin>>a>>b>>c&&(a!=0||b!=0||c!=0))
    54     {
    55         memset(G,0,sizeof(G));
    56         memset(vis,0,sizeof(vis));
    57         for(i=1; i<=a; i++)
    58         for(j=1; j<=b; j++)
    59         for(k=1; k<=c; k++)
    60         {
    61             cin>>ch;
    62             if(ch=='.')
    63             G[i][j][k]=1;
    64             if(ch=='E')
    65             {
    66                 e.l=i; e.r=j; e.c=k;
    67                 G[i][j][k]=1;
    68             }
    69             if(ch=='S')
    70             {
    71                 s.l=i; s.r=j; s.c=k;
    72                 G[i][j][k]=1;
    73             }
    74         }
    75         x=bfs(e.l,e.r,e.c);
    76         if(x==-1)
    77         cout<<"Trapped!"<<endl;
    78         else
    79         printf("Escaped in %d minute(s).
    ",x);
    80     }
    81     return 0;
    82 }
  • 相关阅读:
    双飞翼布局 & 圣杯布局
    php正则
    面向对象-object对象
    面向对象-赋值运算
    面向对象-作用域
    js高级-面向对象
    8.5学习笔记
    10.22
    10.19
    react路由
  • 原文地址:https://www.cnblogs.com/bfshm/p/3283101.html
Copyright © 2011-2022 走看看