题目大意:

地牢大师(感觉像是一款游戏啊.......)

    你被困在一个3D的地牢里面,并且需要发现最快的出去的路,这个地牢由很多小立方体组成,有的是空的可以走,有的被岩石填充了不可以走,移动一下要花费1分钟的时间(可以向前后左右上下移动),不能对角移动和移动到迷宫外面,因为迷宫四周都是有岩石包围的。
这是一个逃亡的问题,你需要花费多长时间呢?
//////////////////////////////////////////////////////
简直就是广搜的模板题......直接上吧,1A不错不错
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<queue>
  4. using namespace std;
  5.  
  6. #define maxn 100
  7.  
  8. struct node
  9. {
  10.     int x, y, z, step;
  11. };
  12.  
  13. int h, m, n;//高,长和宽
  14. //6个方向可以走
  15. int dir[][] = { {,,},{-,,},{,,},{,-,},{,,},{,,-} };
  16. char G[maxn][maxn][maxn];
  17.  
  18. int OK(int z, int x, int y)//判断这点是否可以走
  19. {
  20.     if(z>=&&z<&& x>=&&x<&& y>=&&y<&& G[z][x][y] != '#')
  21.         return ;
  22.     return ;
  23. }
  24. int DFS(node s, node e)
  25. {
  26.     queue<node> Q;
  27.     Q.push(s);
  28.  
  29.     while(Q.size())
  30.     {
  31.         s = Q.front();Q.pop();
  32.  
  33.         if(s.x==e.x&&s.y==e.y&&s.z==e.z)
  34.             return s.step;
  35.  
  36.         for(int i=; i<; i++)
  37.         {
  38.             node q = s;
  39.             q.+= dir[i][];
  40.             q.+= dir[i][];
  41.             q.+= dir[i][];
  42.             q.step += ;
  43.  
  44.             if(OK(q.z, q.x, q.y) == )
  45.             {
  46.                 G[q.z][q.x][q.y] = '#';
  47.                 Q.push(q);
  48.             }
  49.         }
  50.     }
  51.  
  52.     return -;
  53. }
  54.  
  55. int main()
  56. {
  57.     while(scanf("%d%d%d", &h, &m, &n), h+m+n)
  58.     {
  59.         int i, j, k;
  60.         node s, e;
  61.  
  62.         for(i=; i<h; i++)
  63.         for(j=; j<m; j++)
  64.         {
  65.             scanf("%s", G[i][j]);
  66.             for(k=; k<n; k++)
  67.             {
  68.                 if(G[i][j][k] == 'S')
  69.                 {
  70.                     s.= i;
  71.                     s.= j;
  72.                     s.= k;
  73.                     s.step = ;
  74.                 }
  75.                 if(G[i][j][k] == 'E')
  76.                 {
  77.                     e.= i;
  78.                     e.= j;
  79.                     e.= k;
  80.                 }
  81.             }
  82.         }
  83.  
  84.         int ans = DFS(s, e);
  85.  
  86.         if(ans != -)
  87.             printf("Escaped in %d minute(s).\n", ans);
  88.         else
  89.             printf("Trapped!\n");
  90.     }
  91.  
  92.     return ;
  93. }

B - Dungeon Master的更多相关文章

  1. POJ 2251 Dungeon Master(3D迷宫 bfs)

    传送门 Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 28416   Accepted: 11 ...

  2. poj 2251 Dungeon Master

    http://poj.org/problem?id=2251 Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submis ...

  3. Dungeon Master 分类: 搜索 POJ 2015-08-09 14:25 4人阅读 评论(0) 收藏

    Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20995 Accepted: 8150 Descr ...

  4. POJ 2251 Dungeon Master --- 三维BFS(用BFS求最短路)

    POJ 2251 题目大意: 给出一三维空间的地牢,要求求出由字符'S'到字符'E'的最短路径,移动方向可以是上,下,左,右,前,后,六个方向,每移动一次就耗费一分钟,要求输出最快的走出时间.不同L层 ...

  5. UVa532 Dungeon Master 三维迷宫

        学习点: scanf可以自动过滤空行 搜索时要先判断是否越界(L R C),再判断其他条件是否满足 bfs搜索时可以在入口处(push时)判断是否达到目标,也可以在出口处(pop时)   #i ...

  6. Dungeon Master poj 2251 dfs

    Language: Default Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16855 ...

  7. POJ 2251 Dungeon Master(地牢大师)

    p.MsoNormal { margin-bottom: 10.0000pt; font-family: Tahoma; font-size: 11.0000pt } h1 { margin-top: ...

  8. BFS POJ2251 Dungeon Master

    B - Dungeon Master Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u ...

  9. POJ 2251 Dungeon Master (非三维bfs)

    Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 55224   Accepted: 20493 ...

  10. POJ 2251 Dungeon Master /UVA 532 Dungeon Master / ZOJ 1940 Dungeon Master(广度优先搜索)

    POJ 2251 Dungeon Master /UVA 532 Dungeon Master / ZOJ 1940 Dungeon Master(广度优先搜索) Description You ar ...

随机推荐

  1. ado.net与各种orm操作数据方式的比较

    ADO.NET与ORM的比较(1):ADO.NET实现CRUD http://zhoufoxcn.blog.51cto.com/792419/283952 ADO.NET与ORM的比较(2):NHib ...

  2. C#线程池ThreadPool.QueueUserWorkItem接收线程执行的方法返回值

    最近在项目中需要用到多线程,考虑了一番,选择了ThreadPool,我的需求是要拿到线程执行方法的返回值, 但是ThreadPool.QueueUserWorkItem的回调方法默认是没有返回值的,搜 ...

  3. [总结]FFMPEG视音频编解码零基础学习方法

    在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“ ...

  4. maven+jetty项目在tomcat部署

    步骤1:项目打包 clean install 步骤二:拷贝war 包到tomcat下 步骤三:修改server.xml文件的端口 步骤四:启动tomcat,注意jetty的项目是不需要带项目名的,To ...

  5. Java线程(学习整理)--4---一个简单的生产者、消费者模型

     1.简单的小例子: 下面这个例子主要观察的是: 一个对象的wait()和notify()使用情况! 当一个对象调用了wait(),那么当前掌握该对象锁标记的线程,就会让出CPU的使用权,转而进入该对 ...

  6. Proxy 模式

    在以下集中情况下可以用 Proxy模式解决问题: 1)创建开销大的对象时候,比如显示一幅大的图片,我们将这个创建的过程交给代理去完成,GoF 称之为虚代理(Virtual Proxy): 2)为网络上 ...

  7. 【C#枚举】根据EnumName获取Value

    public static int GetEnumValue(Type enumType, string enumName) { try { if (!enumType.IsEnum) throw n ...

  8. iframe中在父窗口打开子页面

    我们在做页面框架的时候,通常会采用一个iframe来显示子页面,但有这么种情况,就是session失效时,登录页面就会显示在iframe中,这不符合常理,一般应该显示在顶部才对. 下面的js代码可以解 ...

  9. 使用Raphael 画图(三) 事件 (javascript)

    这章展示事件例子. 下图是官方API的事件: 例子: var butt1 = paper.set(); var a1 = paper.circle(24.833, 26.917, 26.667).at ...

  10. angular post发送请求和GET发送请求,服务器端接收不到信息的问题

    参数可能因为编码原因,服务器端无法接收到传递的值, 这时需要用到补丁来解决这个问题 1,下载一个http.patch.js文件,放入YII框架中的js/ng文件架内 2angularjs 创建模型部分 ...