热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

WUST2050三维迷宫(bfs)

2050:三维迷宫TimeLimit:1SecMemoryLimit:128MB64bitIOFormat:%lldSubmitted:50Accepted:12[Submit][

2050: 三维迷宫

Time Limit: 1 Sec  Memory Limit: 128 MB  64bit IO Format: %lld
Submitted: 50  Accepted: 12
[Submit][Status][Web Board]

Description

你现在处于一栋楼里的'S'的起始位置,'#'是墙壁,'.'是路,'E'是重点,'U'的楼梯代表你可以上去一层,'D'的楼梯代表你可以下去一层(保证上去跟下去的地方不会是墙壁)。请你告诉我至少要多少步才能到达终点,当然有可能去不到重点,这时请输出"Trapped!"

Input

输入一个LNM,L代表层数,N,代表每层的长,M代表每层的宽。接下来有LN*M的图形,代表从第1层到第L层的地图。保证 L,N,M均不大于50

Output

输入最小要多少步才能到终点,如果出不去,请输出"Trapped!"

Sample Input 

3 5 5
S...U
#####
..###
....U
#####.....
.####
..###
D###U
#####.....
.####
..###
###E.
#####1 3 3
S.#
##E
###


Sample Output

20
Trapped!



Author

ControlBear

[Submit][Status][Web Board]


题解:

不是很难的一道bfs题,处理起来有点麻烦而已

代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
char p[55][55][55];//存图
int vis[55][55][55];//遍历数组
int dirx[4]={0,0,-1,1};
int diry[4]={1,-1,0,0};
int l,n,m;
int sc,sx,sy,ec,ex,ey;//存起始点坐标
struct node
{int c,x,y;int step;
};
queueq;
int main()
{int i,j,k,tag,s;node now,next;while(scanf("%d%d%d",&l,&n,&m)!=EOF){while(!q.empty())q.pop();for(i=0;i=0&&!vis[now.c-1][now.x][now.y]){vis[now.c-1][now.x][now.y]=1;next=now;next.c--;next.step++;q.push(next);}}else if(p[now.c][now.x][now.y]=='U'){if(now.c+1=0&&xx=0&&yy}






推荐阅读
author-avatar
虚实人生轶事
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有