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 ...
随机推荐
- redis RDB快照和AOF日志持久化配置
Redis持久化配置 Redis的持久化有2种方式 1快照 2是日志 Rdb快照的配置选项: save 900 1 // 900内,有1条写入,则产生快照 save 300 1000 ...
- BZOJ 1691 [Usaco2007 Dec]挑剔的美食家 multiset_排序_贪心
Description 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了.现在,Farmer John不得不去牧草专供商那里 ...
- bzoj 1293: [SCOI2009]生日礼物 问题转化 + 性质分析 + 滚动数组优化
Description 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置).某些坐标上可以没有彩珠,但多个彩 ...
- 训练1-D
把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果.在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果. Input 每行包含 ...
- XPath语法简明介绍
简介: XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. XPath 路径表达式: XPath 使用路径表达式来选取 XML 文档中的节点 ...
- Django入门--模板路径配置及渲染
模板就是前端的页面,Django把html源码写到模板文件中,然后通过特定方法渲染后交给客户端. 模板路径设置方法有两种,分别是在项目目录下设置以及在应用目录下设置. 模板查找顺序:优先在DIRS设置 ...
- maven引入spring相关依赖
<!--spring相关包--> <dependency> <groupId>org.springframework</groupId> <art ...
- HDU 3342 -- Legal or Not【裸拓扑排序 &&水题 && 邻接表实现】
Legal or Not Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- 去哪网实习总结:JavaWeb中文传參乱码问题的解决(JavaWeb)
本来是以做数据挖掘的目的进去哪网的.结构却成了系统开发... 只是还是比較认真的做了三个月.老师非常认同我的工作态度和成果... 实习立即就要结束了,总结一下几点之前没有注意过的变成习惯和问题,分享给 ...
- wpf 全局异常捕获处理
/// <summary> /// App.xaml 的交互逻辑 /// </summary> public partial class App : Application { ...