hdu 1240(三维广搜)
题意:
有一个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(三维广搜)的更多相关文章
- 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 ...
- PAT L3-004 肿瘤诊断(三维广搜)
在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积. 输入格式: 输入第一行给出4个正整数:M.N.L.T,其中M和N是每张切片的尺寸(即每张切片 ...
- HDU 1253 (简单三维广搜) 胜利大逃亡
奇葩!这么简单的广搜居然爆内存了,而且一直爆,一直爆,Orz 而且我也优化过了的啊,尼玛还是一直爆! 先把代码贴上睡觉去了,明天再来弄 //#define LOCAL #include <ios ...
- HDU 1240 (简单三维广搜) Asteroids!
给出一个三维的迷宫以及起点和终点,求能否到大终点,若果能输出最短步数 三维的问题无非就是变成了6个搜索方向 最后强调一下xyz的顺序,从输入数据来看,读入的顺序是map[z][x][y] 总之,这是很 ...
- zoj1940(三维广搜)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=940 分析:三维其实就是六个方向地搜索,思维清晰且细心点,很快就AC了 ...
- hdu 1495 非常可乐 广搜
#include<iostream> #include<cstdio> #include<cstring> #include<queue> ][][]; ...
- hdu 1342.. 复习广搜 顺便练习一下一个脑残的格式
In a Lotto I have ever played, one has to select 6 numbers from the set {1,2,...,49}. A popular stra ...
- HDU 1240——Asteroids!(三维BFS)POJ 2225——Asteroids
普通的三维广搜,须要注意的是输入:列,行,层 #include<iostream> #include<cstdio> #include<cstring> #incl ...
- HDU 1240 Asteroids!
三维广搜 #include <cstdio> #include <iostream> #include <cstring> #include <queue&g ...
随机推荐
- 执行 cobbler get-loaders报错
在配置cobbler安装时执行 cobbler get-loaders报错 [root@110:~]# cobbler get-loaders Traceback (most recent call ...
- codevs 2800 送外卖 floyd + Tsp
简单的状压动归 #include<cstdio> #include<algorithm> using namespace std; const int N=17; const ...
- 自定义View(未完待续)
一.概述 android提供了丰富的系统控件,但在实际开发中,这些控件依然不能完全覆盖我们的需求.有时,我们需要自定义控件来满足一些个性化产品需求.自定义控件,主要有以下三种方式: 继承现有控件,对其 ...
- JavaScript 三要素
一个完整的JavaScript 实现由3部分组成: ECMACcript ECMAScript 规定了这门语言的下列组成部分: 语法 类型 语句 关键字.保留字 操作符 对象为什么要使用DOM? ...
- SurgingFunction
- PHP学习总结(7)——PHP入门篇之PHP注释
注释 在PHP中也有注释语句:用双斜杠(//)来表示.其它语言中,Html中使用<!--注释语句-->,CSS中使用/*注释语句*/.如下面代码: <?php//输出hi,imooc ...
- jQuery练习总结(二)
--------------------------------------- <!DOCTYPE html> <!DOCTYPE HTML PUBLIC "-//W3C/ ...
- [Windows Server]安装系统显示“缺少计算机所需的介质驱动程序”解决方案
1.把电脑上插着的硬盘拔了 2.重试 3.修复计算机找到dos命令行 4.然后进入我们放置解压了的系统的那个符盘,(我这里放在D盘)输入:d: 找到刚才我们解压了的系统文件,进入sourc ...
- 0x37 容斥原理与莫比乌斯函数
多重集的组合数公式得记下.cf451E就是这个的裸题 #include<cstdio> #include<iostream> #include<cstring> # ...
- System.setProperty 与 System.getProperty
转自:https://www.cnblogs.com/woftlcj/p/8404451.html System可以有对标准输入,标准输出,错误输出流:对外部定义的属性和环境变量的访问:加载文件和库的 ...