这是一个立方体的空间的路径搜索问题,若可达输出步数,不可达输出“NO ROUTE”

一道……课后题

输入的话我是按字符输入这个空间的

然后普通的bfs,一个方向数组,一个空间数组(因为只用一次,懒的再开一个,反正标记了,就是不能走的意思)引入某大佬的函数返回值做条件判重

需要注意的是,注意它的空间x,y,z轴分别怎么表示,我是通过建模型搞的(肯定有简单的方法)

下面是代码(西加加)

#include <iostream>
#include <string>
#include <queue>
#include <cstdio>
using namespace std;
bool mapp[10][10][10];
int a,b,c,d,e,f,n;
int dir[6][3]={{0,0,1},{0,1,0},{0,0,-1},{0,-1,0},{1,0,0},{-1,0,0}};
struct point{
int x,y,z,step;
point(int xx,int yy,int zz,int ss=0):x(xx),y(yy),z(zz),step(ss){}
point(){}
};
bool judge(point ipo){//区分或与与
if(ipo.x>=n||ipo.x<0)return 0;
if(ipo.y>=n||ipo.y<0)return 0;
if(ipo.z>=n||ipo.z<0)return 0;
if(mapp[ipo.z][ipo.y][ipo.x]==1)return 0;
return 1;
}
int bfs(){
queue<point>que;
que.push(point(a,b,c));
point now;
int tstep;
while(!que.empty()){
now=que.front();
que.pop();
if(now.x==d&&now.y==e&&now.z==f){
return now.step;
}
//if(judge(now)){mapp[now.z][now.y][now.x]=1; }
mapp[now.z][now.y][now.x]=1;
int tx,ty,tz;
tstep=now.step+1;
for(int t=0;t<6;t++){
tx=now.x+dir[t][2];
ty=now.y+dir[t][1];
tz=now.z+dir[t][0];
if(judge(point(tx,ty,tz)))que.push(point(tx,ty,tz,tstep));//判断次数相等,插入删除次数少
}
}
return -1;
}
int main()
{
string str;
int i,j,k;
char ch;
while(cin >> str >> n){
for(i=0;i<n;i++)
for(j=0;j<n;j++)
for(k=0;k<n;k++)
mapp[i][j][k]=0;
getchar();
for(i=0;i<n;i++){
for(j=0;j<n;j++){
for(k=0;k<n;k++){
ch=getchar();
if(ch=='X')mapp[i][j][k]=1;
}
getchar();
}
}
scanf("%d%d%d",&a,&b,&c);
scanf("%d%d%d",&d,&e,&f);
int ans=bfs();
cin >> str;
if(ans==-1)cout << "NO ROUTE" << endl;
else cout << n << ' ' << ans << endl;
}
return 0;
}
//对应关系
//x y z
//k j i
//a b c
//d e f

Asteroids!_poj2225的更多相关文章

  1. POJ 3041 Asteroids

     最小点覆盖数==最大匹配数 Asteroids Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12678 Accepted:  ...

  2. Asteroids(匈牙利算法入门)

    Asteroids Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16211   Accepted: 8819 Descri ...

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

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

  4. POJ 3041 Asteroids(最小点覆盖集)

                                                                      Asteroids Time Limit: 1000MS   Mem ...

  5. Asteroids (最小覆盖)

    题目很简单,但是需要推到出二分图最大匹配 = 最小覆盖 最小覆盖:证明过程http://blog.sina.com.cn/s/blog_51cea4040100h152.html Descriptio ...

  6. poj 3041 Asteroids(最小点覆盖)

    http://poj.org/problem?id=3041 Asteroids Time Limit: 1000MS   Memory Limit: 65536K Total Submissions ...

  7. poj 3041 Asteroids (最大匹配最小顶点覆盖——匈牙利模板题)

    http://poj.org/problem?id=3041 Asteroids Time Limit: 1000MS   Memory Limit: 65536K Total Submissions ...

  8. HDU-1240 Asteroids! (BFS)这里是一个三维空间,用一个6*3二维数组储存6个不同方向

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

  9. POJ 3041 Asteroids 最小点覆盖 == 二分图的最大匹配

    Description Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape o ...

随机推荐

  1. 建立Web Service 接口及调用

    WEB SERVICE 接口: [WebMethod] public string MaterialRequest(string jsonText) { string WorkNo; string P ...

  2. 树链剖分-Hello!链剖-[NOIP2015]运输计划-[填坑]

    This article is made by Jason-Cow.Welcome to reprint.But please post the writer's address. http://ww ...

  3. MySQL必知必会(第4版)整理笔记

    参考书籍: BookName:<SQL必知必会(第4版)> BookName:<Mysql必知必会(第4版)> Author: Ben Forta 说明:本书学习笔记 1.了解 ...

  4. Linux - Shell - date

    概述 date 命令 准备 OS CentOS 7.6 基本功能 显示时间 格式化时间 翻译时间 转换时间格式 切换时区 设置时间 查看文件最后使用时间 1. 显示时间 概述 基本功能 命令 # 内容 ...

  5. go基础_控制语句

    if控制语句 说明:(1)if后面的条件语句不用加括号 (2)if后面可以跟一个简单的初始化语句,并以分号分割,初始化语句中的变量的作用域是整个if语句块 (3)if语句的条件语句需要尽量简单 (4) ...

  6. C#中的注释

    帮助程序员便于阅读代码 单行注释 // 多行注释 /* * */ 文档注释 /// <summary> /// ... /// <summary>

  7. reduce 方法(升序)

    语法: array1.reduce(callbackfn[, initialValue]) 参数 定义 array1 必需.一个数组对象. callbackfn 必需.一个接受最多四个参数的函数.对于 ...

  8. lintcode算法周竞赛

    ------------------------------------------------------------第七周:Follow up question 1,寻找峰值 寻找峰值 描述 笔记 ...

  9. spring 基于xml的申明式AspectH中的后置通知的返回值获取

    spring 基于xml的申明式AspectH中的后置通知的返回值获取 1. 配置文件 <aop:config> <aop:aspect ref="myAspect&quo ...

  10. github是什么,有什么用

    转载连接:https://blog.csdn.net/obkoro1/article/details/68066441 写在前面:关于github的文章我已经写了两篇了,关于github个人网站搭建和 ...