三维bfs题目。

题目长,还不好好看题真的是找死啊。自以为坐标表示与前面的矩阵表示一样是层,行,列。没想到竟然是列、行、层。导致一直WA。

幸好最后发现改回来了,果然AC

#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>#define FOR(i,a,b) for (int i=(a);i<(b);i++)
#define sf scanf
#define pf printf
using namespace std;#define N 10struct node{int x;int y;int z;int step;node(int xx,int yy,int zz,int sstep = 0):x(xx),y(yy),z(zz),step(sstep){}node(){x = 0;y = 0; z = 0; step = 0;}node(const node & rhs){x = rhs.x;y = rhs.y;z = rhs.z;step = rhs.step;}
};queue<node> bfs_next;
node target;
char s[N][N][N];
int n;
node next[6];
bool is_out;
bool is_used[N][N][N];void setnode(node &lhs,int x,int y,int z,int step = 0)
{lhs.x = x;lhs.y = y;lhs.z = z;lhs.step = step;
}void setnode(node &lhs,node rhs)
{lhs.x = rhs.x;lhs.y = rhs.y;lhs.z = rhs.z;lhs.step = rhs.step;
}bool checknode(node lhs)
{return lhs.x>=0 && lhs.x<n && lhs.y>=0 && lhs.y<n && lhs.z>=0 && lhs.z<n;
}bool checkuse(node lhs)
{return (is_used[lhs.x][lhs.y][lhs.z]);
}void bfs(node where)
{if (!checknode(where) || checkuse(where) || s[where.x][where.y][where.z] == 'X')return;else{is_used[where.x][where.y][where.z] = true;if (where.x==target.x && where.y == target.y && where.z == target.z){is_out = true;pf("%d %d\n",n,where.step);while(!bfs_next.empty()) bfs_next.pop();}else{node tmp;tmp.step = where.step+1;FOR(i,0,6){tmp.x = where.x + next[i].x;tmp.y = where.y + next[i].y;tmp.z = where.z + next[i].z;bfs_next.push(tmp);}}}return;
}
int main()
{setnode(next[0],0,0,1);setnode(next[1],0,0,-1);setnode(next[2],0,1,0);setnode(next[3],0,-1,0);setnode(next[4],1,0,0);setnode(next[5],-1,0,0);while(sf("START %d\n",&n)!=EOF){memset(is_used,false,sizeof(is_used));is_out = false;FOR(i,0,n){FOR(j,0,n){FOR(k,0,n){sf("%c",&s[i][j][k]);}sf("\n");}}int x,y,z;//列行层输入scanf("%d %d %d\n",&z,&y,&x);node start(x,y,z,0);scanf("%d %d %d\n",&z,&y,&x);setnode(target,x,y,z);bfs_next.push(start);while(!bfs_next.empty()){setnode(start,bfs_next.front());bfs_next.pop();bfs(start);}if (!is_out) pf("NO ROUTE\n");sf("END\n");}return 0;
}

zoj 1438 Asteroids!相关推荐

  1. zoj 1438 - Asteroids!

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1438 还是很经典的搜索题,有意思的是把原来的二维迷宫改为了立体迷宫,用三维 ...

  2. UVA 1438 - Asteroids(三维凸包)

    题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  3. 神牛笔记:吉林大学ACM总结(fennec)

    其实在北京比赛完的时候,我就想写了,不过还是早了点,直到上海比赛结束,大家的心中都不是太好受.郭老师有句话:你们这样做也是对的,不成功就成仁.让我的心也能安慰了不少. 我是从大一下学期开始接触ACM的 ...

  4. 一位学长的ACM总结(感触颇深)

    发信人: fennec (fennec), 信区: Algorithm 标 题: acm 总结 by fennec 发信站: 吉林大学牡丹园站 (Wed Dec 8 16:27:55 2004) AC ...

  5. POJ ZOJ题目分类

    POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...

  6. POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)

    水题: 3299,2159,2739,1083,2262,1503,3006,2255,3094 初级: 一.基本算法:        (1)枚举 (1753,2965)       (2)贪心(13 ...

  7. ZOJ 题目分类,学校的一个巨巨做的。

     DP: 1011      NTA                    简单题 1013      Great Equipment        简单题 1024      Calendar ...

  8. poj题目详细分类及算法推荐题目

    DP:  1011   NTA                 简单题  1013   Great Equipment     简单题  1024   Calendar Game       简单题  ...

  9. ACM POJ 题目分类(完整整理版本)

    DP: 1011   NTA                 简单题  1013   Great Equipment     简单题  1024   Calendar Game       简单题   ...

最新文章

  1. 转;说说AngularJS中的$parse和$eval
  2. 李开复:白手起家的10个步骤
  3. linux安装jetty部署war包,jetty部署war包
  4. Ubuntu下git使用教程
  5. TensorFlow——本地加载fashion-mnist数据集
  6. Java EE 架构设计——基于okhttp3 的网络框架设计
  7. 前端通过jqplot绘制折线图
  8. Illustrator 教程,如何在 Illustrator 中修改形状?
  9. Please create pull requests instead of asking for help on Homebrew‘s GitHubError: macOS 10.13
  10. wsl使用可视化界面_WSL 科学计算〇 | 适合计算化学的环境配置
  11. 柒微自动发卡系统源码
  12. php物料编码生成器,物料编码生成器软件
  13. Total Control通过定义配置文件,预加载脚本教程
  14. android 模拟器 界面,详细了解雷电安卓模拟器的界面介绍让你更好的使用模拟器...
  15. 如何修改jar包并重新打包
  16. 乐优商城_第5章_-vue入门
  17. 滴滴拉屎v1.20 一款非常好用的找厕所工具
  18. PPT文件不能编辑是什么原因
  19. 霍尔线序排列与电机运转的关系
  20. JCL新手入门学习教程(1) 2021-02-09

热门文章

  1. [转]如果你知道自己40岁的时候一定会被裁员,那你会做什么?
  2. jflash烧录教程_Jlink烧录nand flash操作(步骤一)
  3. 数学建模06 ——种群竞争模型
  4. zip 伪加密学习,压缩包十六进制数据含义分析
  5. 瑞星助手(小狮子卡卡)右键菜单消失的解决方法
  6. 比尔盖茨痛数离婚:我确实出轨犯下大错,爱泼斯坦的事早该听她的
  7. matlab12个简答题,Matlab 期末考试题库(共12套卷)
  8. 微信二维码登录实现思路
  9. 低延迟音视频传输技术在直播领域的应用
  10. php 实现图形验证码,PHP实现图形验证码案例(1)