M - 魔戒
Description
蓝色空间号和万有引力号进入了四维水洼,发现了四维物体–魔戒。

这里我们把飞船和魔戒都抽象为四维空间中的一个点,分别标为 “S” 和 “E”。空间中可能存在障碍物,标为 “#”,其他为可以通过的位置。

现在他们想要尽快到达魔戒进行探索,你能帮他们算出最小时间是最少吗?我们认为飞船每秒只能沿某个坐标轴方向移动一个单位,且不能越出四维空间。

Input
输入数据有多组(数据组数不超过 30),到 EOF 结束。

每组输入 4 个数 x, y, z, w 代表四维空间的尺寸(1 <= x, y, z, w <= 30)。

接下来的空间地图输入按照 x, y, z, w 轴的顺序依次给出,你只要按照下面的坐标关系循环读入即可。

for 0, x-1

for 0, y-1for 0, z-1for 0, w-1

保证 “S” 和 “E” 唯一。

Output
对于每组数据,输出一行,到达魔戒所需的最短时间。

如果无法到达,输出 “WTF”(不包括引号)。

Sample
Input
2 2 2 2

.S

#.
#.
.E
.#

2 2 2 2

.S
#.

E.
.#
#.

Output
1
3

#include <bits/stdc++.h>
using namespace std;
const int N = 35;
int vis[N][N][N][N];
char ma[N][N][N][N];
int dx[8] = {0, 0, 0, 0, 0, 0, 1, -1};
int dy[8] = {0, 0, 0, 0, 1, -1, 0, 0};
int dz[8] = {0, 0, 1, -1, 0, 0, 0, 0};
int dw[8] = {1, -1, 0, 0, 0, 0, 0, 0};
struct node {int a, b, c, d, s;
} t, p;
int x, y, z, w;
void bfs() {vis[t.a][t.b][t.c][t.d] = 1;queue<node> q;q.push(t);while (!q.empty()) {t = q.front();q.pop();if (ma[t.a][t.b][t.c][t.d] == 'E') {printf("%d\n", t.s);return;}for (int i = 0; i < 8; i++) {p.a = t.a + dx[i];p.b = t.b + dy[i];p.c = t.c + dz[i];p.d = t.d + dw[i];p.s = t.s + 1;if (p.a < 0 || p.b < 0 || p.c < 0 || p.d < 0 || p.a >= x ||p.b >= y || p.c >= z || p.d >= w)continue;if (ma[p.a][p.b][p.c][p.d] != '#' && vis[p.a][p.b][p.c][p.d] == 0) {vis[p.a][p.b][p.c][p.d] = 1;q.push(p);}}}printf("WTF\n");
}
int main() {while (~scanf("%d%d%d%d", &x, &y, &z, &w)) {getchar();memset(vis, 0, sizeof(vis));memset(ma, '0', sizeof(ma));for (int i = 0; i < x; i++) {for (int j = 0; j < y; j++) {for (int k = 0; k < z; k++) {for (int l = 0; l < w; l++) {scanf("%c", &ma[i][j][k][l]);if (ma[i][j][k][l] == 'S') {t.a = i, t.b = j, t.c = k, t.d = l, t.s = 0;}}getchar();}}}bfs();}
}

M - 魔戒(四维BFS)相关推荐

  1. 魔戒(BFS+四维数组)

    Description 蓝色空间号和万有引力号进入了四维水洼,发现了四维物体–魔戒. 这里我们把飞船和魔戒都抽象为四维空间中的一个点,分别标为 "S" 和 "E" ...

  2. M - 魔戒(BFS+四维数组)

    Description 蓝色空间号和万有引力号进入了四维水洼,发现了四维物体–魔戒. 这里我们把飞船和魔戒都抽象为四维空间中的一个点,分别标为 "S" 和 "E" ...

  3. SDUT 校赛 D题 魔戒(bfs+四维数组)

    魔戒 Time Limit: 1000MS  Memory Limit: 65536KB Problem Description 蓝色空间号和万有引力号进入了四维水洼,发现了四维物体--魔戒. 这里我 ...

  4. 鬼吹灯之牧野诡事(四维bfs)

    鬼吹灯之牧野诡事 Problem Description 蓝色空间号和万有引力号进入了四维水洼,发现了四维物体–魔戒. 这里我们把飞船和魔戒都抽象为四维空间中的一个点,分别标为 "S&quo ...

  5. uva 10047 the monocyle (四维bfs)

    算法指南白书 维护一个四维数组,走一步更新一步 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 ...

  6. 2021牛客暑期多校训练营2,签到题CDFKI

    2021牛客暑期多校训练营2 题号 标题 已通过代码 通过率 团队的状态 A Arithmetic Progression 点击查看 6/72 未通过 B Cannon 点击查看 34/104 未通过 ...

  7. 2018网易游戏雷火盘古实习生招聘笔试真题

    2月15号参加的网易游戏实习在线笔试(内推),以为会考小题的,背了一天计算机网络和操作系统,结果拿到题只有4道编程大题,囧~如果没有一点算法竞赛的知识,想拿下来还是挺困难的.(网易游戏应该算国内笔试很 ...

  8. 广度优先搜索BFS——模板(附四维拓展:SDUT 3929魔戒)

    广度优先搜索使用队列(queue)来实现,整个过程也可以看做一个倒立的树形: 把根节点放到队列的末尾.每次从队列的头部取出一个元素,查看这个元素所有的下一级元素,把它们放到队列的末尾.并把这个元素记为 ...

  9. 魔戒(思维+bfs)

    Description 蓝色空间号和万有引力号进入了四维水洼,发现了四维物体--魔戒. 这里我们把飞船和魔戒都抽象为四维空间中的一个点,分别标为 "S" 和 "E&quo ...

最新文章

  1. 深度学习最近发现详细分析报告
  2. Squid 和 Varnish 代理服务器的简单搭建
  3. 获取rabbitmq连接对象_RabbitMQ——简单队列
  4. 电子计算机 俗称 它是一种具有,2013年计算机一级B试题模拟1
  5. python整数类型在每一台计算机上的取值范围是一样的_人工智能第一章:Python语言基础...
  6. linux 解压tar.jz,linux系统压缩文件和解压缩命令
  7. 关于某些系统统计查询等业务进行大数据量的测试
  8. HashSet 与HashMap底层实现
  9. 面试稳了!网易资深工程师详解运维面经!
  10. Java 中的抽象类和接口
  11. list -- set方法——替换列表中指定位置的元素
  12. Java菜鸟教程 标识符
  13. 原生 js 实现弹窗
  14. 昂达平板不能开机刷机_昂达平板电脑刷机教程
  15. 电容或电感的电压_用动画来解释电感和电容元件上电压电流超前滞后的关系
  16. 好架构师都是写代码写出来的
  17. vue解决分页组件删除和添加内容-页码出现错误
  18. goahead(嵌入式) webservice (3.3.0)运行goforms
  19. 海外众筹 | 如何创建专业的Kickstarter预算
  20. centos 安装 Go环境

热门文章

  1. 【经典】非全序列底板通俗演义-AC OC EG CL 红黑碳王
  2. 2021编程语言top10,C蝉联第一,Python超越Java成为第二
  3. 逆袭之旅DAY.XIA.Object中常用方法
  4. 魔漫相机任晓倩:我是这样说服马云投资千万美金的
  5. 【宝付-上海宝付】狂风暴雨过后宝付今后的路该如何走?
  6. Qt 之 ActiveX控件跑官方例程记录
  7. jzoj1082劲乐团
  8. “老赖”王思聪、罗永浩、贾跃亭挡住“发币”诱惑
  9. 工作中MNU010 至 MNU140表的名称及作用
  10. 网站关键词优化技术:如何对关键词分类细分处理