题目链接:http://poj.org/problem?id=2251

参考了一下大神们的解法。也有用深搜的。然而,之前不久看到一句话,最短路径——BFS。

参考:http://blog.csdn.net/lyy289065406/article/details/6647938

#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <queue> using namespace std; char map[][][];///存放地图
bool hash[][][];///这条路是否走过 struct point{
int x; ///l
int y; ///r
int z; ///c
int step;///移动的步数
}; int main()
{
int l,r,c;
while(scanf("%d%d%d",&l,&r,&c),l&&r&&c)
{
int i,j,k;
point start; memset(hash,false,sizeof(hash)); for(i=;i<l;i++)
{
for(j=;j<r;j++)
{
scanf("%s",map[i][j]);
for(k=;k<c;k++)
{
if(map[i][j][k]=='S')
{
///对起点初始化
start.x=i;
start.y=j;
start.z=k;
start.step=; hash[i][j][k]=true;///这条路走过了
}
}
}
} queue<point> bfs; bfs.push(start);///入队 bool found=false; ///是否找到最优解 while(!bfs.empty())
{
point tmp=bfs.front(); bfs.pop(); if(map[tmp.x][tmp.y][tmp.z]=='E')
{
found=true;
printf("Escaped in %d minute(s).\n",tmp.step);
break;
} tmp.step++; point tmp2; if(tmp.x>) ///向下走
{
tmp2=tmp;
tmp2.x--;
if(map[tmp2.x][tmp2.y][tmp2.z]!='#'&&hash[tmp2.x][tmp2.y][tmp2.z]==false)
{
///如果下一层不是障碍物并且没走过,则往下走,标记该点,入队
hash[tmp2.x][tmp2.y][tmp2.z]=true;
bfs.push(tmp2);
}
} ///向上走
if(tmp.x<l-)
{
tmp2=tmp;
tmp2.x++;
if(map[tmp2.x][tmp2.y][tmp2.z]!='#'&&hash[tmp2.x][tmp2.y][tmp2.z]==false)
{
hash[tmp2.x][tmp2.y][tmp2.z]=true;
bfs.push(tmp2);
}
} ///向北走
if(tmp.y>)
{
tmp2=tmp;
tmp2.y--;
if(map[tmp2.x][tmp2.y][tmp2.z]!='#'&&hash[tmp2.x][tmp2.y][tmp2.z]==false)
{
hash[tmp2.x][tmp2.y][tmp2.z]=true;
bfs.push(tmp2);
}
} ///向南走
if(tmp.y<r-)
{
tmp2=tmp;
tmp2.y++;
if(map[tmp2.x][tmp2.y][tmp2.z]!='#'&&hash[tmp2.x][tmp2.y][tmp2.z]==false)
{
hash[tmp2.x][tmp2.y][tmp2.z]=true;
bfs.push(tmp2);
}
} ///向西走
if(tmp.z>)
{
tmp2=tmp;
tmp2.z--;
if(map[tmp2.x][tmp2.y][tmp2.z]!='#'&&hash[tmp2.x][tmp2.y][tmp2.z]==false)
{
hash[tmp2.x][tmp2.y][tmp2.z]=true;
bfs.push(tmp2);
}
} ///向东走
if(tmp.z<c-)
{
tmp2=tmp;
tmp2.z++;
if(map[tmp2.x][tmp2.y][tmp2.z]!='#'&&hash[tmp2.x][tmp2.y][tmp2.z]==false)
{
hash[tmp2.x][tmp2.y][tmp2.z]=true;
bfs.push(tmp2);
}
} }
if(!found)
printf("Trapped!\n"); }
return ;
}

立体最短路径,广搜(POJ2251)的更多相关文章

  1. 广搜,深搜,单源最短路径,POJ(1130),ZOJ(1085)

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=85 http://poj.org/problem?id=1130 这 ...

  2. poj 3984:迷宫问题(广搜,入门题)

    迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7635   Accepted: 4474 Description ...

  3. hdu 1242:Rescue(BFS广搜 + 优先队列)

    Rescue Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submis ...

  4. poj 3026 Borg Maze 最小生成树 + 广搜

    点击打开链接 Borg Maze Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7097   Accepted: 2389 ...

  5. nyoj 523 双向广搜

    题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=523 #include<iostream> #include<cstd ...

  6. 解救小哈——bfs广搜

    问题描述: 小哈去玩迷宫,结果迷路了,小哼去救小哈.迷宫由n行m列的单元格组成(n和m都小于等于50),每个单元格要么是空地,要么是障碍物. 问题:帮小哼找到一条从迷宫的起点通往小哈所在位置的最短路径 ...

  7. hdu 1253 胜利大逃亡 (广搜)

    题目链接 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个ABC的立方体,可以被表示成A个 ...

  8. 69.广搜练习:  最少转弯问题(TURN)

    [问题描述] 给出一张地图,这张地图被分为n×m(n,m<=100)个方块,任何一个方块不是平地就是高山.平地可以通过,高山则不能.现在你处在地图的(x1,y1)这块平地,问:你至少需要拐几个弯 ...

  9. hdu 1026:Ignatius and the Princess I(优先队列 + bfs广搜。ps:广搜AC,深搜超时,求助攻!)

    Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

随机推荐

  1. js css 点亮 星级评分

    利用css 和 js 实现星级评分 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  2. 并行执行hive脚本

    ### 模板脚本存放路径(无需修改) cd /tmp/fix_data/tmp_wjj_20180322_01 ### 脚本名称 script=tmp_wjj_20180322_01 ### 开始日期 ...

  3. HIVE锁相关

    hive存在两种锁,共享锁Shared (S)和互斥锁Exclusive (X) 其中只触发s锁的操作可以并发的执行,只要有一个操作对表或者分区出发了x锁,则该表或者分区不能并发的执行作业. -- 加 ...

  4. QQ号_保存_20180124

    1.1337978907 (密码:33+我的名字全小写全部拼音) 2. 3. 4. 5.

  5. ctrip-apollo

    云端多网卡问题: 参考:https://blog.csdn.net/buyaore_wo/article/details/79847404

  6. 性能测试工具Jmeter04-脚本录制

    Jmeter脚本录制:不推荐使用,这里就不介绍了 Badboy脚本录制 下载地址:http://www.badboy.com.au Badboy是一个强大的工具,旨在帮助测试和开发复杂的动态应用.Ba ...

  7. PHP速学

    基本代码 <?php echo "Hello world";?> 变量定义 <?php $a=true; $bool_value=true; $integer_v ...

  8. 第8章 IO类

    8.1 IO类 iostream                    istream, wistream从流中读取数据 ostream, wostream iostream, wiostream读写 ...

  9. 为什么阿里云服务器的docker启动tomcat这么慢??

    https://blog.csdn.net/tianyiii/article/details/79314597 最近在阿里云服务器使用Docker启动Tomcat,发现tomcat服务器启动过程很慢. ...

  10. pat1031. Hello World for U (20)

    1031. Hello World for U (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Giv ...