题目链接: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. mongodb在windows下安装

    下载地址:https://www.mongodb.com/download-center/community 我下载的是zip版本 新建目录:data |_db |_log cmd到所下载的mongo ...

  2. python模块之numpy

    Numpy是一个第三方库,是数组相关的运算 通过pip安装:pip install numpy Anaconda python的一个科学计算发行版本,安装后将不必单独安装numpy,下面的库模块也将不 ...

  3. 惠普台式机在UEFI BIOS设置通电自动开机 影响电脑自动重启关不了机设置

    设置通电自动开机 影响电脑自动重启关不了机设置   惠普台式机在UEFI BIOS中 1. 开机时不断点击F10键进入BIOS,选择Advanced(高级)然后选择Boot Options,点击回车 ...

  4. Lonsdor K518ISE Key Programmer Review

    Lonsdor K518ISE key programmer is the latest version of Lonsdor, with wider vehicle coverage in key ...

  5. python3与python2的区别 记录一波

    1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果. Py3.1性能比Py2 ...

  6. Turing Year 2012

    Turing LectureFrom cryptanalysis to cognitive neuroscience - a hidden legacy of Alan Turinghttp://co ...

  7. InnoDB还是MyISAM?

    两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁.而MyISAM不支持.所以MyISAM往往就容易被人认为只适合在小项目中使用. 我作为使用MySQL的用户角度出发,Innodb和My ...

  8. Json的访问

    JSON:JavaScript 对象表示法(JavaScript Object Notation) 写法:名称/值对 访问方法:可以通过 data.名称 访问,也可以通过 data['名称'] 访问 ...

  9. http request 字段

    Accept: 客户端支持的文件类型, 如果为/表示任何类型 Accept-Encoding: 客户端浏览器支持的文件压缩格式 Accept-Language: 客户端支持的语言 User-Agent ...

  10. avalon教程-简介

    avalon是什么? avalon是一个MVVM框架, Modle-模型层,即为js中从后台接口中取出的数据,例如一个对象或者对象数组,并对这些数据进行一定的格式化.常见的返回数据是这样的{id : ...