三维广搜

#include <cstdio>
#include <iostream>
#include <cstring>
#include <queue>
using namespace std; struct node
{
int x,y,z;
int steps;
}start,end,next;
int dx[]={,,,,,-};
int dy[]={,,-,,,};
int dz[]={,-,,,,};
char maps[][][];
int n,res; bool check(node &a)
{
if(a.x>=&&a.x<n&&a.y>=&&a.y<n&&a.z>=&&a.z<n)
return true;
else return false;
} int bfs()
{
if(start.x==end.x&&start.y==end.y&&start.z==end.z)
return res;
node cur;
queue<node> q;
while(!q.empty())
q.pop();
q.push(start);
maps[start.x][start.y][start.z]='X';
while(!q.empty())
{
cur=q.front();
q.pop();
for(int i=;i<;i++)
{
next.x=cur.x+dx[i];
next.y=cur.y+dy[i];
next.z=cur.z+dz[i];
if(next.x==end.x&&next.y==end.y&&next.z==end.z)
return cur.steps+;
if(maps[next.x][next.y][next.z]=='O'&&check(next))
{
next.steps=cur.steps+;
maps[next.x][next.y][next.z]='X';
q.push(next);
}
}
}
return -;
} int main()
{
int i,j;
char st[],ed[];
while(scanf("%s%d",&st,&n)!=EOF)
{
getchar();
for(i=;i<n;i++)
{
for(j=;j<n;j++)
scanf("%s",maps[i][j]);
getchar();
}
scanf("%d%d%d",&start.x,&start.y,&start.z);
scanf("%d%d%d",&end.x,&end.y,&end.z);
getchar();
gets(ed);
res=;
start.steps=;
res=bfs();
if(res>=) printf("%d %d\n",n,res);
else printf("NO ROUTE\n");
}
return ;
}

HDU 1240 Asteroids!的更多相关文章

  1. hdu 1240:Asteroids!(三维BFS搜索)

    Asteroids! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  2. hdu 1240 Asteroids! (三维bfs)

    Asteroids! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  3. HDU 1240 Asteroids!(BFS)

    题目链接 Problem Description You're in space.You want to get home.There are asteroids.You don't want to ...

  4. HDU 1240 Asteroids! 题解

    Asteroids! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  5. HDU 1240 Asteroids! 解题报告

    //这道题做完我只有 三个感受  第一:坑: 第二 : 坑! 第三:还是坑! 咳咳  言归正传  WA了无数次之后才发现是输入进去时坐标时z, y, x的顺序输入的 题解   :  类似胜利大逃亡 只 ...

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

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

  7. hdu 1240 Asteroids!(BFS)

    题目链接:点击链接 简单BFS,和二维的做法相同(需注意坐标) 题目大意:三维的空间里,给出起点和终点,“O”表示能走,“X”表示不能走,计算最少的步数 #include <iostream&g ...

  8. HDU 1240 Asteroids!【BFS】

    题意:给出一个三维的空间,给出起点和终点,问是否能够到达终点 和上一题一样,只不过这一题的坐标是zxy输入的, 因为题目中说的是接下来的n行中分别是由n*n的矩形组成的,所以第一个n该是Z坐标,n*n ...

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

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

随机推荐

  1. oracle习题SQL语句练习

    表(一)Student (学生表) 属性名 数据类型 可否为空 含 义 Sno Varchar2(3) 否 学号(主码) Sname Varchar2(8) 否 学生姓名 Ssex Varchar2( ...

  2. J - 搞笑版费马大定理

    J - 搞笑版费马大定理 Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%lld & %llu Submit  ...

  3. R与数据分析旧笔记(三)不知道取什么题目

    连线图 > a=c(2,3,4,5,6) > b=c(4,7,8,9,12) > plot(a,b,type="l") 多条曲线效果 plot(rain$Toky ...

  4. 常用ajax请求

    JQuery版本的ajax请求:(包括处理WebService中xml字符串) $.ajax({ type: "POST", async: true, url: "&qu ...

  5. IO之读入文件

    整个java.io包中最重要的就是5个类和一个接口,5个类指的是File,OutputStream,InputStream,Reader,Writer:一个接口是Serializable. 在整个io ...

  6. MySQL float 与decimal 各中的区别。

    想一个问题: 1/3+1/3+1/3=1.0 0.3+0.3+0.3 =0.9 想一想在小数的世界里要什么表示1/3呢!它的办法就是取一个与1/3十分接近的小数来代替:如上面例子中的0.3来代替1/3 ...

  7. SQL Server 储存过程的output 参数

    要做的参数的回传一方面要做到有储存过程的配合,再一方面也要有调用方法的配合,也就是说错误的调用方法是没有办法把值回传的. 下面是例子 --1.储存过程方面的配合 create procedure db ...

  8. LuCI探究(转)

    原文链接 : http://www.cnblogs.com/gnuhpc/archive/2013/08/31/3293643.html 1. 多语言 1)检查: opkg list | grep l ...

  9. Nhibernate初入门基本配置(一)

    文章出处:http://www.cnblogs.com/GoodHelper/archive/2011/02/14/nhiberante_01.html 一.NHibernate简介 什么是?NHib ...

  10. SQL Server 2008 错误 233 的解决办法

    问题一.忘记了登录Microsoft SQL Server 2008 的sa的登录密码 解决方法:先用windows身份验证的方式登录进去,然后在‘安全性’-‘登录’-右键单击‘sa’-‘属性’,修改 ...