题意:

有一个n*n*n的三维空间。

给你起始坐标和终点坐标。要你从起点到终点,问最少需要多少步走出去。如果走不出去则输出"NO ROUTE"。

空间中 'O' 表示这个点可以走,'X'表示这个点不能走。

题解:

三维广搜。这是一道水题

直接上代码:

#include <iostream>
#include <queue>
#include <cstdio> using namespace std; typedef struct point //空间 点结构体
{
int x,y,z; //x,y,z坐标 x对应i,y对应j,z对应h。(第i行,第j列,高h)
int step; //步数
}Point; const int MAX=12; char mmap[MAX][MAX][MAX]; //地图 int n;
string str;
int si,sj,sh; //保存起点坐标
int ei,ej,eh; //保存终点坐标 Point cur,nxt; int dx[]={-1,1,0,0,0,0}; //方向控制 前 后 左 右 上 下
int dy[]={0,0,-1,1,0,0};
int dz[]={0,0,0,0,1,-1}; void bfs()
{
queue<Point> q;
cur.x=si;
cur.y=sj;
cur.z=sh;
cur.step=0;
q.push(cur);
while(!q.empty())
{
cur=q.front();
q.pop(); for(int i=0;i<6;i++)
{
nxt.x=cur.x+dx[i];
nxt.y=cur.y+dy[i];
nxt.z=cur.z+dz[i];
nxt.step=cur.step+1; if(nxt.x<0||nxt.x>=n||nxt.y<0||nxt.y>=n||nxt.z<0||nxt.z>=n) continue; //如果坐标越界 continue; if(nxt.x==ei&&nxt.y==ej&&nxt.z==eh) //到达终点 返回
{
cout<<n<<" "<<nxt.step<<endl;
return;
}
if(mmap[nxt.z][nxt.x][nxt.y]=='O') //把搜过的点设成不能走的点
{
mmap[nxt.z][nxt.x][nxt.y]='X';
q.push(nxt);
}
}
}
cout<<"NO ROUTE"<<endl; //如果队列为空 则 没有路
} int main()
{
while(cin>>str>>n)
{
for(int h=0;h<n;h++)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cin>>mmap[h][i][j];
}
}
}
cin>>sj>>si>>sh;
cin>>ej>>ei>>eh;
cin>>str; if(si==ei&&sj==ej&&sh==eh) //如果起点和终点一样
{
cout<<n<<" "<<0<<endl;
continue;
} bfs();
}
return 0;
}

  

hdu 1240(三维广搜)的更多相关文章

  1. UVa 1600 Patrol Robot(三维广搜)

    A robot has to patrol around a rectangular area which is in a form of m x n grid (m rows and ncolumn ...

  2. PAT L3-004 肿瘤诊断(三维广搜)

    在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积. 输入格式: 输入第一行给出4个正整数:M.N.L.T,其中M和N是每张切片的尺寸(即每张切片 ...

  3. HDU 1253 (简单三维广搜) 胜利大逃亡

    奇葩!这么简单的广搜居然爆内存了,而且一直爆,一直爆,Orz 而且我也优化过了的啊,尼玛还是一直爆! 先把代码贴上睡觉去了,明天再来弄 //#define LOCAL #include <ios ...

  4. HDU 1240 (简单三维广搜) Asteroids!

    给出一个三维的迷宫以及起点和终点,求能否到大终点,若果能输出最短步数 三维的问题无非就是变成了6个搜索方向 最后强调一下xyz的顺序,从输入数据来看,读入的顺序是map[z][x][y] 总之,这是很 ...

  5. zoj1940(三维广搜)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=940 分析:三维其实就是六个方向地搜索,思维清晰且细心点,很快就AC了 ...

  6. hdu 1495 非常可乐 广搜

    #include<iostream> #include<cstdio> #include<cstring> #include<queue> ][][]; ...

  7. hdu 1342.. 复习广搜 顺便练习一下一个脑残的格式

    In a Lotto I have ever played, one has to select 6 numbers from the set {1,2,...,49}. A popular stra ...

  8. HDU 1240——Asteroids!(三维BFS)POJ 2225——Asteroids

    普通的三维广搜,须要注意的是输入:列,行,层 #include<iostream> #include<cstdio> #include<cstring> #incl ...

  9. HDU 1240 Asteroids!

    三维广搜 #include <cstdio> #include <iostream> #include <cstring> #include <queue&g ...

随机推荐

  1. React重点概要

    JSX语法: 1.ReactDOM.render:用于将模板转换为HTML语言,并插入指定的DOM节点: 语法规则:遇到 HTML 标签(以 < 开头),就用 HTML 规则解析,HTML 语言 ...

  2. day27-3 matplatlib模块

    目录 matplotlib 条形图 折线图 散点图 matplotlib 图形可视化,主要用来画图 别问,问就是看不懂 条形图 import matplotlib.pyplot as plt # 只识 ...

  3. CSS - Span 下的width设置不可用?

    解决:Span 下的width设置不可用? 内联元素-span有根据内容自动伸缩的能力,当需要对其宽度设定时,出现无效的情况. Demo:http://jsfiddle.net/JSDavi/ad62 ...

  4. Project Euler 29 Distinct powers( 大整数质因数分解做法 + 普通做法 )

    题意: 考虑所有满足2 ≤ a ≤ 5和2 ≤ b ≤ 5的整数组合生成的幂ab: 22=4, 23=8, 24=16, 25=3232=9, 33=27, 34=81, 35=24342=16, 4 ...

  5. jquery-Kendo框架

    从github上下载的包是完整的,可以根据readme.md上的步骤来操作 从官网下的那个包不是完整的,里面没有例子,只有源文件

  6. 工具-NuGet

    1.添加下载后,会将文件添加到当前项目的引用和bin目录中 ORM是一种插件/组件,将对集合对象的操作映射为对关系型数据库的操作,这个映射是相互的 来自为知笔记(Wiz)

  7. 洛谷—— P1457 城堡 The Castle

    https://www.luogu.org/problem/show?pid=1457 题目描述 我们憨厚的USACO主人公农夫约翰(Farmer John)以无法想象的运气,在他生日那天收到了一份特 ...

  8. robot framework框架selenium API

    RIDE面板认识 selenium API 关键字 语法 参数 备注 Open Browser url Chrome 用不同的浏览器打开url,需要下载不同的浏览器驱动,默认火狐 Close Brow ...

  9. STM32F030, 使用嘀嗒定时器Systick实现LED闪烁

    本文主要解决两个问题 1 STM32的IO口要反转,怎么实现? 2 嘀嗒定时器systick的配置 解答1: 单片机的口,反转非常easy.sbit led = P1 ^6;  led = ~led; ...

  10. j-link修复 write flash 一直无法点击

    write flash 一直无法点击 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMTcyNDI5NTc=/font/5a6L5L2T/fonts ...