`
249326109
  • 浏览: 56148 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

uva 532 - Dungeon Master

    博客分类:
  • acm
 
阅读更多

bfs在三维空间的扩展,仔细一点问题不大。

 

#include<stdio.h>
#include<string.h>

typedef struct Point {
	int x;
	int y;
	int z;
	int len;
} Point;

typedef Point* Ptr;

char dungeon[40][40][40];
int l, r, c;
int dir[6][3] = { { 1, 0, 0 }, { -1, 0, 0 }, { 0, 1, 0 }, { 0, -1, 0 }, { 0, 0,
		1 }, { 0, 0, -1 } };

Point start;
Point end;
Point queue[100000];
int length;

int bfs() {
	int front = 0;
	int rear = 1;
	queue[0].x = start.x;
	queue[0].y = start.y;
	queue[0].z = start.z;
	queue[0].len = start.len;
	dungeon[start.x][start.y][start.z] = '#';

	int i, newX, newY, newZ;
	while (front < rear) {
		Ptr p = &queue[front++];

		for (i = 0; i < 6; i++) {
			newX = p->x + dir[i][0];
			newY = p->y + dir[i][1];
			newZ = p->z + dir[i][2];
			if (newX >= 0 && newX < l && newY >= 0 && newY < r && newZ >= 0
					&& newZ < c && dungeon[newX][newY][newZ] != '#') {

				if (newX == end.x && newY == end.y && newZ == end.z) {
					return p->len + 1;
				}
				queue[rear].x = newX;
				queue[rear].y = newY;
				queue[rear].z = newZ;
				queue[rear].len = p->len + 1;
				dungeon[newX][newY][newZ] = '#';
				rear++;

			}

		}

	}
	return -1;
}

int main() {

	while (scanf("%d%d%d", &l, &r, &c) != EOF) {
		if (l == 0)
			break;
		length = -1;
		memset(dungeon, 0, sizeof(dungeon));

		getchar();
		int i, j, k;
		for (i = 0; i < l; i++) {
			for (j = 0; j < r; j++) {
				for (k = 0; k < c; k++) {
					scanf("%c", &dungeon[i][j][k]);
					if (dungeon[i][j][k] == 'S') {
						start.x = i;
						start.y = j;
						start.z = k;
						start.len = 0;
					} else if (dungeon[i][j][k] == 'E') {
						end.x = i;
						end.y = j;
						end.z = k;
						end.len = -1;
					}

				}
				getchar();
			}
			getchar();
		}

		length = bfs();
		if (length >= 0)
			printf("Escaped in %d minute(s).\n", length);
		else
			printf("Trapped!\n");

	}

	return 0;
}

 

分享到:
评论

相关推荐

    uva532-Dungeon-Master.rar_dungeon

    《UVA532 Dungeon Master:解密游戏编程的深度探索》 在计算机科学与编程领域,UVA(University of Virginia)在线判题系统是一个深受程序员喜爱的平台,它提供了丰富的算法题目供学习者挑战。其中,编号为532的...

    POJ2251-Dungeon Master

    【标题】"POJ2251-Dungeon Master" 是一个来自北京大学在线判题系统POJ(Problem Set)的编程题目。这个题目属于算法竞赛的一部分,挑战者需要编写程序来解决特定的问题,以提高自己的编程能力和算法理解。 【描述...

    2D Hand Painted - Dungeon Tileset v1.2.unitypackage

    2D Hand Painted - Dungeon Tileset v1.2,2D Hand Painted - Dungeon Tileset v1.2,2D Hand Painted - Dungeon Tileset v1.2,

    开源项目-Meshiest-go-dungeon.zip

    从【压缩包子文件的文件名称列表】来看,只有一个名为`go-dungeon-master`的目录,这很可能是项目的源代码仓库。通常,开源项目会包含以下几部分: 1. `README.md`:项目介绍和使用指南,包括安装、配置和运行的...

    URP像素地牢:Pixel Art Platformer - Dungeon 1.1.3

    适用于平台游戏的32x32地牢道具和瓷砖。 特征 309个地牢道具。 1个地牢地面瓷砖。 1个地牢墙瓷砖纹理。 带有打开和关闭动画的箱子、门和开关。...在导入此包之前,请确保它已正确安装在您的项目中。...

    3D-pixel-dungeon-3d.zip

    3D-pixel-dungeon-3d.zip,三维模型为像素地牢流氓角色扮演,3D建模使用专门的软件来创建物理对象的数字模型。它是3D计算机图形的一个方面,用于视频游戏,3D打印和VR,以及其他应用程序。

    2017 勇者无敌 - Dungeon Breaker Starter Kit 3.0f.zip项目unity源码下载

    2017 勇者无敌 - Dungeon Breaker Starter Kit 3.0f.zip项目unity源码下载2017 勇者无敌 - Dungeon Breaker Starter Kit 3.0f.zip项目unity源码下载 1.适合学生学习研究参考 2.适合个人学习研究参考 3.适合公司开发...

    2017 勇者无敌 - Dungeon Breaker Starter Kit 3.0f

    《2017 勇者无敌 - Dungeon Breaker Starter Kit 3.0f》是一款基于Unity引擎的游戏开发套件,专为初学者和开发者设计,帮助他们快速构建地下城冒险类游戏。这个套件提供了丰富的游戏元素和工具,使得创建具有深度和...

    地牢破坏者001-Dungeon+Breaker+Starter+Kit+beta3.zip

    《地牢破坏者001-Dungeon Breaker Starter Kit beta3》是一款基于Unity引擎开发的游戏启动包,主要用于帮助开发者和游戏爱好者快速构建自己的地牢探险类游戏。Unity是一款广泛使用的跨平台游戏开发工具,以其强大的...

    Pokemon-Mystery-Dungeon-Password-Sharer:Pokemon-Mystery-Dungeon-DX网络工具,只需几个步骤即可共享您的救援请求密码和复兴密码

    "Pokemon-Mystery-Dungeon-Password-Sharer-master"这个压缩包文件名暗示了这是项目的主分支源代码。对于熟悉编程的玩家或开发者来说,可以深入了解工具的工作原理,甚至进行二次开发,添加更多实用功能。例如,可能...

    js-dungeon-scare-v2

    "js-dungeon-scare-v2-master"这一文件名暗示了项目可能使用Git进行版本管理,这对于团队协作和代码历史追踪至关重要。 总的来说,"js-dungeon-scare-v2"项目是一个综合性的JavaScript学习平台,涵盖了从基本语法到...

    Rogue-Like-Dungeon-Crawler

    《Rogue-Like-Dungeon-Crawler》是一款深受玩家喜爱的游戏类型,它融合了Roguelike元素和地牢探索玩法,通常包含随机生成的地图、永久死亡机制、回合制战斗以及丰富的角色成长系统。这种游戏模式提供了无尽的重玩...

    slackbot-dungeon-master

    Dicebot / Spellbot for Slack 完全基于上的Taylor Brennan的指南15/9/3-添加了对XdY + Z的常数加法的支持15年9月9日-添加了对负常量(也称为XdY-Z)的支持15年9月10日-创建了Spellbot,增加了对列出角色咒语和单个...

    discordjs-d20-dungeon

    cd discordjs-d20-dungeon 安装所有软件包。 npm install 复制.env.example文件,并将其重命名为.env 。 打开文件,并使用discord bot的令牌更改TOKEN变量。 您可以在找到/制作您的机器人。 然后使用 npm start ...

    Unity游戏项目源码 地牢破坏者001-Dungeon+Breaker+Starter+Kit+beta3 完整版.zip

    《地牢破坏者001 Dungeon Breaker Starter Kit beta3 Unity游戏项目源码》 本压缩包提供的是一款基于Unity引擎开发的游戏项目源码——“地牢破坏者001”。Unity是一个广泛应用于游戏开发的跨平台游戏引擎,以其强大...

    goblins-pixel-dungeon-master:哥布林像素地牢

    哥布林像素地牢大师 哥布林像素地牢 这是旧的预分级版本。 可以在以下存储库中找到新的存储库: : “哥布林像素地牢”。 它是基于David Mitchell的Unleashed PD进行的狂热修改,其中包含了Tarol Hunt-Stephens 艺术...

    RPD-The-Epic-Dungeon

    在压缩包文件"RPD-The-Epic-Dungeon-master"中,我们可以期待找到以下关键组成部分: 1. **源代码**:项目的核心部分,包含用Lua编写的脚本文件,这些文件定义了游戏的逻辑、规则和事件响应。可能包括主角行为、...

    2-115勇者无敌 - Dungeon Breaker Starter Kit 3.0f.rar

    Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity插件源码Unity...

    Leetcode经典01背包-UVA_and_classic_problem:c++写的一些UVA题目的解答以及一些LeetCode的解答

    Leetcode经典01背包UVA Problem This repository ...Dungeon Master -&gt; BFS类型的题目 299 - Train Swapping 10038 - Jolly Jumpers 10193 - All You Need Is Love -&gt; 简单题,主要考察最大公约数问题g

    地牢矮人角色道具场景:POLYGON - Dungeon Realms Pack 1.0

    史诗级的低多边形资源包,包含角色、道具、武器和环境元素,用于创建一个幻想主题的多边形风格游戏。 模块化的部分易于以多种组合方式拼接。 核心特点 完全模块化的地下城! 包含一个超大型演示场景 ...

Global site tag (gtag.js) - Google Analytics