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 ...
随机推荐
- VMware VCSA 6.0安装过程 (转)
VMware VCSA 6.0安装过程(专版) 一.环境准备 VMware vCenter Server Appliance(VCSA)6.0的部署和之前的版本不同,在5.5及之前的版本可以通过 ...
- Python笔记21-------浅复制和深复制、赋值
上面图表示浅复制和深复制,针对顶层对象来说,赋值为引用,浅复制和深复制都是复制一个新的对象. 针对子对象来说,浅复制为引用.深复制就是复制两个一样的. 1.赋值 A= [ 1,2,3, [ 'a',' ...
- 数据分析例子-------CTR1
1.CTR: (1)几个概念: impression(展示):用户看到该广告的次数.也就是一个广告被显示了多少次,它就计数多少.比如:打开网站的一个页面,网站上的所有广告就被显示了一次,每个广告增加1 ...
- 网络教程(9)ARP。IP和以太网间映射
question: how does a knows that SFO is the right place to send as Ethernet frame subnet Mask: its ju ...
- django与mysql实现简单的增删查改
模型定义 from django.db import models class Grades(models.Model): g_name = models.CharField(max_length=2 ...
- Updates were rejected because the remote contains work that you do(gitee报错解决方案)
今天向Gitee远程仓库提交本地项目文件时,遇到了下列错误,很是郁闷 正在推送 1203笔记本Error: failed to push some refs to 'https://gitee.com ...
- java并发之阻塞队列
在前面我们接触的队列都是非阻塞队列,比如PriorityQueue.LinkedList(LinkedList是双向链表,它实现了Dequeue接口). 阻塞队列与普通队列的区别在于:当队列是空的时, ...
- MySQL 存储
1.存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户 ...
- APS.NET webform中的isPostBack
IsPostBack介绍Page.IsPostBack是一个标志:当前请求是否第一次打开. 调用方法为:Page.IsPostBack或者IsPostBack或者this.IsPostBack或者th ...
- [Design]Adobe CS6 2%错误问题
错误描述:FATAL: Payload '{3F023875-4A52-4605-9DB6-A88D4A813E8D} Camera Profiles Installer 6.0.98.0' info ...