题意:给你一个高L长R宽C的图形。每个坐标都能够视为一个方格。你一次能够向上。下。左,右,前,后任一方向移动一个方格, 可是不能向有#标记的方格移动。

问:从S出发能不能到达E,假设能请输出最少的移动次数。

策略:简单的深搜。

注意:由于是求最少的移动次数。所以要从全部能到达的中选出最少的。

代码:

#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std;
#define INF 0x3f3f3f3f
char map[35][35][35];
int ans, l, r, c;
const int dirx[6] = {1, -1, 0, 0, 0, 0};
const int diry[6] = {0, 0, 1, -1, 0, 0};
const int dirz[6] = {0, 0, 0, 0, 1, -1};
struct node{int x, y, z;int step;
};
node st, en;
queue<node > q;
char s[10000];
bool vis[35][35][35];int limit(node s){return (s.x<l&&s.x>=0&&s.y>=0&&s.y<r&&s.z>=0&&s.z<c&&map[s.x][s.y][s.z] != '#');
}int match(node s){if(s.x==en.x&&s.y==en.y&&s.z==en.z) return 1;else return 0;
}
void bfs(){memset(vis, 0, sizeof(vis));ans = INF;  //初始化最大int i;q.push(st);//map[st.x][st.y][st.z] = '#';vis[st.x][st.y][st.z] = 1;while(!q.empty()){node temp = q.front();for(i = 0; i < 6; i ++){node temp2;temp2.x = temp.x+dirx[i];temp2.y = temp.y+diry[i];temp2.z = temp.z+dirz[i];temp2.step = temp.step+1;//printf("%d %d %d %d..", temp2.x, temp2.y, temp2.z, temp2.step);if(limit(temp2)&&!vis[temp2.x][temp2.y][temp2.z]){if(match(temp2)){ans = ans<temp2.step?

ans:temp2.step; //要bfs完所有的 } else{ q.push(temp2); vis[temp2.x][temp2.y][temp2.z] = 1; } } } // if(ans) break; q.pop(); } if(ans == INF) printf("Trapped!\n"); else printf("Escaped in %d minute(s).\n", ans); } int main(){ int i, j, k; while(scanf("%d%d%d", &l, &r, &c), l||r||c){ memset(map, 0, sizeof(map)); for(i = 0; i < l; i ++){ for(j = 0; j < r; j ++){ scanf("%s", map[i][j]); for(k = 0; k <c; k ++){ if(map[i][j][k] == 'S'){ st.x = i; st.y = j; st.z = k; st.step = 0; } if(map[i][j][k] == 'E'){ en.x =i; en.y = j; en.z = k; en.step = 0; } } } gets(s); } bfs(); } return 0; }

NYOJ 353 3D dungeon 【bfs】相关推荐

  1. nyoj 284 坦克大战【bfs】

    坦克大战 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 Many of us had played the game "Battle city" i ...

  2. NYOJ 58 步数最少 【BFS】

    意甲冠军:不解释. 策略:如果: 这个问题也可以用深宽搜索搜索中使用.我曾经写过,使用深层搜索.最近的学校范围内的搜索,拿这个问题来试试你的手. 代码: #include<stdio.h> ...

  3. 【BFS】魔板(c++基础算法)

    本专栏上一篇:[BFS]八数码问题(c++基础算法) 目录 一.读题 ①题面 ②题意 三.做题 ①算法原理 ②算法实现 Ⅰ三种基本操作 Ⅱ操作序列 Ⅲ输出 Ⅳ一个特殊情况 四.AC代码 最后 一.读题 ...

  4. POJ 3414 Pots【BFS】+ Python

    原题链接: 3414 -- Pots 参考资料:POJ 3414 - Pots | 眈眈探求 POJ 3414 Pots[BFS][图搜] - it610.com 一 特别注意: 1. 每一种操作对应 ...

  5. GJM:Unity开发HTC vive 三、远处拖动3D物体 【转载】

    腾讯GAD  窗间风月 原文URL : http://gad.qq.com/article/detail/7192223 版权所有,禁止匿名转载:禁止商业使用:禁止个人使用. 在项目中会需要拖动远处的 ...

  6. 【枚举】【二分答案】【分块答案】【BFS】【最大流】【Dinic】bzoj1189 [HNOI2007]紧急疏散evacuate...

    [法一]枚举Time(0~N*M): S->'.'(1); 'D'->T(Time); '.'->'D'(dis(用BFS预处理,注意一旦到达'D',BFS就不能继续扩展了,注意di ...

  7. 用平面图片制作3D模型【3DsMax】

    01 先在网上找一张简单的素材图片,如图所示.(图片最好背景颜色和图形颜色2种颜色) 02 用AI软件打开素材图片,如图所示. 03 在点[对象]菜单中,点[图像描摹],选择[建立并扩展],如图所示. ...

  8. 3D dungeon(BFS)

    描述 You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of ...

  9. [kuangbin]专题二 搜索进阶 Escape HDU - 3533【BFS】

    [题目描述] The students of the HEU are maneuvering for their military training. The red army and the blu ...

最新文章

  1. springboot整合mybatis和mybatis-plus
  2. 如何成为一个合格的项目经理?
  3. uClinux下移植Ne2000兼容的网卡驱动程序(转)
  4. 信用逾期3年是不是一定会坐牢?
  5. 观察者模式和js自定义事件
  6. Redis缓存安装Version5.0.7
  7. PostgreSQL 10.1 手册_部分 III. 服务器管理_第 26 章 高可用、负载均衡和复制_26.4. 日志传送的替代方法...
  8. 如何使用SubtitleWorkshop制作字幕
  9. jdbc mysql wait_timeout_MySql wait_timeout问题解决办法。
  10. Windows下C++多线程同步与互斥简单运用-转
  11. linux 下运行 jar包 java.lang.ClassNotFoundException: 解决办法
  12. 设计模式C++学习笔记之三(Singleton单例模式)
  13. Tensor Flow量化里representative_dataset参数是什么意思?
  14. poj 2096 Collecting Bugs 概率dp入门题
  15. 操作系统 读者-写者问题
  16. 零件测绘与计算机作图理论试题,浅谈《零部件测绘与cad成图技术》技能竞赛对中职机械制图和cad制图课程整合的影响...
  17. 无线专题 路由器和交换机、光猫的区别
  18. Eclipse新建Android项目报错解决方案详细汇总
  19. 业界关注中药创新 古典名方目录急盼出台
  20. k8s cpu 和内存资源说明

热门文章

  1. Flask框架从入门到精通之转换器(四)
  2. MySQL的binlog_row_image
  3. javascript中async await的用法
  4. 【行业看点】量子通信 量子计算机 量子列车…… 量子的世界究竟多精彩?
  5. Android开发实践:如何设置NDK的编译选项
  6. Mysql Cluster节点类型
  7. 十大开源的.NET用户界面框架 让GUI设计不再犯难
  8. 2.3 CMMI2级——项目跟踪和控制(Project Monitoring and Control)
  9. 【转】北京四中学习方法
  10. Writing a FilterUnloadCallback Routine for a Minifilter Driver 为一个微过滤驱动写一个过滤器卸载回调例程...