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

Uva 532 Dungeon Master

    博客分类:
  • UVa
阅读更多

题目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=105&page=show_problem&problem=473

这道题也是一道很基础的bfs,仅仅是图从二维变成三维
在入队列之前进行判断比出队列之后再进行判断会节约运行的时间,因为减少了入队、出队的赋值操作,对于bfs这样低效的算法,在某些题目里面是很容易超时的,所以能够节约点时间还是好的
还有一点就是自己手写的队列要比调用STL的队列要快一些,但是提高了编程复杂度

#include<iostream>
#include<cstring>
#include<queue>
#define MAXN 30+10
using namespace std;

struct Point
{
	int x,y,z,step;
};

char mat[MAXN][MAXN][MAXN];
char vis[MAXN][MAXN][MAXN];

int bfs(Point start)
{
	vis[start.z][start.x][start.y]=1;
	queue<Point> q;
	q.push(start);
	while(!q.empty())
	{
		Point cur=q.front();
		q.pop();
		int dir[8][3]={-1,0,0,1,0,0,0,-1,0,0,1,0,0,0,-1,0,0,1};
		for(int i=0;i<8;i++)
		{
			Point next;
			next.z=cur.z+dir[i][0];
			next.x=cur.x+dir[i][1];
			next.y=cur.y+dir[i][2];
			next.step=cur.step+1;					
			if(!vis[next.z][next.x][next.y]&&mat[next.z][next.x][next.y]!='#')
			{
				if(mat[next.z][next.x][next.y]=='E') 
					return next.step;
				vis[next.z][next.x][next.y]=1;
				q.push(next);
			}
		}
	}
	return -1;//-1代表无法到达
}
void init()//初始化,全部设为墙壁
{
	memset(vis,0,sizeof(vis));
	for(int i=0;i<MAXN;i++)
		for(int j=0;j<MAXN;j++)
			for(int k=0;k<MAXN;k++)
				mat[i][j][k]='#';
}
int main()
{
	int L,R,C;
	Point start;
	while(cin>>L>>R>>C&&L&&R&&C)
	{
		init();
		for(int i=1;i<=L;i++)//之所以从1开始,是因为外面增加一层墙壁可以省去越界的判断
			for(int j=1;j<=R;j++)
				for(int k=1;k<=C;k++)
				{
					cin>>mat[i][j][k];
					if(mat[i][j][k]=='S')
					{
						start.z=i;
						start.x=j;
						start.y=k;
						start.step=0;
					}
				}
		int ans=bfs(start);
		if(ans==-1) cout<<"Trapped!"<<endl;
		else cout<<"Escaped in "<<ans<<" minute(s)."<<endl;
	}
	return 0;
}
 
分享到:
评论

相关推荐

    uva532-Dungeon-Master.rar_dungeon

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

    POJ2251-Dungeon Master

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

    Dungeon Master DS-开源

    【Dungeon Master DS-开源】项目是一个专门为Nintendo DS游戏设备设计的开源移植版本,它使得经典的游戏Dungeon Master以及其续作能在NDS平台上运行。这个项目的核心目标是将原版游戏的体验完整地转移到掌上设备,...

    Open Dungeon Master Tools-开源

    《Open Dungeon Master Tools——探索开源世界的奇幻冒险》 在广袤的数字世界中,有一类特殊的工具,它们专为地牢大师(Dungeon Master)设计,致力于减轻他们在构建和管理角色扮演游戏(Role-Playing Game,简称...

    DungeonMaster:巨大的地牢

    《DungeonMaster: 巨大的地牢》是一款基于Java编程语言开发的地牢探索游戏。它构建了一个庞大的、错综复杂的地牢世界,为玩家提供了一次充满挑战与冒险的体验。游戏设计独具匠心,难度随着深入逐渐提升,不仅有...

    C++广度优先搜索一本通习题

    Problem D【一本通基础广度优先搜索】Dungeon Master Problem E【一本通基础广度优先搜索】Lake Counting 数池塘 Problem F【一本通基础广度优先搜索】走迷宫 Problem G【一本通基础广度优先搜索】抓住那头牛 ...

    orcpub:Dungeon Master的Vault社区版代码

    Dungeon Master's Vault是一个Web服务器,允许您托管自己的D&D 5th Edition角色生成器网站。 入门 要运行自己的Dungeon Master's Vault安装,有两种方法可以执行。 从我们的Docker存储库中提取Docker容器。 建立...

    vtt-bridge:将Dungeon Master的保管库连接到Roll20的浏览器扩展

    ••••积分•隐私•许可 关于您是否在Roll20上玩D&D,但更喜欢使用Dungeon Master's Vault管理角色? VTT Bridge将您的Dun​​geon Master的Vault角色表无缝连接到Roll20游戏。 主要特征滚动能力检查,武器攻击...

    Dungeon Master - Open Edition-开源

    来自FTL / Interplay的经典游戏Dungeon Master的免费实现,适用于GNU / Linux + SDL。 进一步的实现:SDL库支持的其他(首选POSIX)系统。

    JDMG:像游戏一样的Dungeon Master的Javascript

    "JDMG:像游戏一样的Dungeon Master的Javascript" 指的是一种使用JavaScript编写的Dungeon Master(地牢主人)风格的游戏框架。Dungeon Master通常指的是在桌上角色扮演游戏(TRPG)中,负责设计剧情、控制非玩家角色...

    Dungeon Master Ruler-开源

    在丰富的角色扮演游戏(RPG)世界中,地下城主(Dungeon Master, DM)是故事的编织者,他们构建世界观、设定规则、设计冒险情节,引领玩家探索未知的奇幻领域。而DM Ruler正是一款专为地下城主打造的开源工具,旨在帮助...

    DungeonMasterBot:从此处运行DungeonMaster机器人的地方

    首先,我们需要理解“DungeonMaster”在RPG游戏中的角色。在桌面上的角色扮演游戏中,地牢大师是游戏的主持人,他负责构建故事、设定场景和控制非玩家角色(NPCs),以及裁决游戏规则。而DungeonMasterBot则是这一...

    The Dungeon Master's Cheat Sheet-开源

    这款应用旨在帮助游戏主持人(Dungeon Master,简称DM)更好地组织和管理游戏中的各种元素,从而提升游戏体验。下面将详细介绍这款工具的功能、特点及其在D&D游戏中的应用。 首先,让我们来看看《地牢大师备忘单》...

    github_dungeon_master

    "GitHub Dungeon Master" 是一个可能与游戏开发或者版本控制相关的项目,从标题来看,我们可以猜测它可能是使用GitHub作为平台,结合了RPG游戏中的“Dungeon Master”概念,即地下城主,通常在桌面角色扮演游戏...

    Dungeon Master Helper-开源

    Java应用程序,旨在在针对PDA的AD&D游戏会话中帮助地牢主

    Dungeon Eater

    《Dungeon Eater》是一款融合了益智与策略元素的迷宫探索游戏,深受玩家喜爱。游戏设计灵感来源于经典的“吃豆人”游戏,但在玩法和机制上进行了创新,为玩家带来全新的挑战与乐趣。 首先,游戏的核心玩法是迷宫...

    DUNGEON-MASTER-WEBGL

    【DUNGEON-MASTER-WEBGL】是一个基于WebGL技术构建的地下城冒险游戏项目。WebGL是一种在网页浏览器中实现的JavaScript API,用于渲染交互式的2D和3D图形,无需任何插件。这个项目可能是一个用HTML5、CSS3和...

    Dungeon-Master:基于地下城的射击游戏,灵感来自“ Enter the Gungeon”游戏

    单击“ Dungeon Master.exe”。 享受。 :) 使用项目 下载“ Project src”目录或克隆。 在Unity中,使用选项打开项目。 用作主文件夹“ Project src”目录。 现在您已经准备好,在“资产”中查找场景。 游戏机 ...

    dotnet-Unity的dungeon生成器

    在"DungeonGenerator-master"这个项目中,我们可能会找到以下文件和组件: - 地图格子的类定义(如`Grid.cs`) - 房间类(如`Room.cs`)和其生成逻辑 - 连接算法的实现(如`Corridor.cs`) - 地图渲染相关的脚本...

    Python库 | dungeon-generator-0.0.2.tar.gz

    《Python库:dungeon-generator-0.0.2——打造迷宫生成的魔法世界》 在编程领域,Python因其简洁易读的语法和丰富的库支持而备受青睐。今天我们要探讨的是一个名为“dungeon-generator”的Python库,版本为0.0.2,...

Global site tag (gtag.js) - Google Analytics