HDU 1240 Asteroids! 解题报告
//这道题做完我只有 三个感受 第一:坑; 第二 : 坑! 第三:还是坑!
咳咳 言归正传 WA了无数次之后才发现是输入进去时坐标时z, y, x的顺序输入的
题解 : 类似胜利大逃亡 只不过给你了起始坐标和终点坐标, 让你输出到达目标点所需最少步数;
输出时第一个输出时是START读入的map大小值n;第二个是所求步数
//细节:
1.读入: 读入时分别两次%S把没用的START 和 END读取掉;
2.输出时输出 三维坐标大小值n, 以及步数;
3.输入进去时开始点和结束点坐标都是z, y, x的顺序输入的!!!!!!!多加感叹号 因为这是这道题最坑的地方。
代码奉上:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define N 15
using namespace std;
typedef struct node
{
int x, y, z;
int step;
}ND;
ND s, e;
int dir[6][3] = {0,0,1, 0,1,0, 1,0,0, 0,0,-1, 0,-1,0, -1,0,0};
char maps[N][N][N];
char str[10];
int n;
void inPut()
{
int i, j;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
scanf("%s", maps[i][j]);
scanf("%d %d %d", &s.z, &s.y, &s.x);
scanf("%d %d %d", &e.z, &e.y, &e.x);
scanf("%s", str);
}
void BFS()
{
int x, y, z, i;
ND v;
maps[s.x][s.y][s.z] = 'X';
queue<ND>q;
q.push(s);
while(!q.empty())
{
s = q.front();
q.pop();
if(s.x == e.x && s.y == e.y && s.z == e.z)
{
printf("%d %d\n", n, s.step);
return;
}
for(i = 0; i < 6; i++)
{
x = s.x + dir[i][0];
y = s.y + dir[i][1];
z = s.z + dir[i][2];
if(x >= 0 && x < n && y >= 0 && y < n && z >= 0 && z < n && maps[x][y][z] == 'O')
{
maps[x][y][z] = 'X';
v = {x, y, z, s.step + 1};
q.push(v);
}
}
}
printf("NO ROUTE\n");
}
int main()
{
while(scanf("%s%d", str, &n) != EOF)
{
memset(maps, 0, sizeof(maps));
inPut();
BFS();
}
}
HDU 1240 Asteroids! 解题报告的更多相关文章
- hdu 1240:Asteroids!(三维BFS搜索)
Asteroids! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- Bestcoder13 1003.Find Sequence(hdu 5064) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5064 题目意思:给出n个数:a1, a2, ..., an,然后需要从中找出一个最长的序列 b1, b ...
- hdu 1896.Stones 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1896 题目意思:给出 n 块石头的初始位置和能到达的距离.对于第奇数次遇到的石头才抛掷,偶数次的就忽略 ...
- Valentine's Day Round 1001.Ferries Wheel(hdu 5174)解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5174 题目意思:给出 n 个人坐的缆车值,假设有 k 个缆车,缆车值 A[i] 需要满足:A[i−1] ...
- BestCoder27 1001.Jump and Jump... (hdu 5162) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5162 题目意思:有 n 个 kid,每个 kid 有三个成绩 a, b, c.选最大的一个成绩作为这个 ...
- BestCoder27 1002.Taking Bus(hdu 5163) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5163 题目意思:有 n 个车站,给出相邻两个车站的距离,即车站 i 和车站 i+1 的距离为 di ( ...
- BestCoder25 1001.Harry and Magical Computer(hdu 5154) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5154 题目意思:有 n 门 processes(编号依次为1,2,...,n),然后给出 m 种关系: ...
- BestCoder14 1002.Harry And Dig Machine(hdu 5067) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5067 题目意思:给出一个 n * m 的方格,每一个小方格(大小为1*1)的值要么为 0 要么为一个正 ...
- hdu 1425 sort 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1425 常规的方法是对输入的数从大到小进行排序(可以用sort或qsort),然后输出前m大的数. 不过 ...
随机推荐
- 《30天自制操作系统》15_day_学习笔记
harib12a: 这一部分我们来尝试两个任务的切换.下面我们一步一步的看: 1.定义TSS任务状态段(task statuc segment):定义的一种段,需要在GDT中定义使用 //TSS任务状 ...
- 1.1 C#简介
大家好,这是我的C#(读做 "C sharp")学习之旅,先简介一下我了解的C#吧! 首先,说到C#,就不得不提到微软的.NET..NET是微软推出的软件开发和运行平台,允许应用程 ...
- 内存缓存机制and垃圾回收机制
一.内存缓存机制 var_dump(memory_get_usage(true)); $a="laruence"; var_dump(memory_get_usage(true)) ...
- iOS界面开发
[转载] iOS界面开发 发布于:2014-07-29 11:49阅读数:13399 iOS 8 和 OS X 10.10 中一个被强调了多次的主题就是大一统,Apple 希望通过 Hand-off ...
- 阿里云OneinStack数据库相关
阿里云OneinStack数据库相关必须进入oneinstack目录下执行相关命令 ===================================源码安装目录: Nginx:/usr/loca ...
- OBD K线抓包 III
14230 HL激活, 5BPS又称 00 //电平激活 C1 33 F1 81 66 //14230的Enter命令 83 F1 11 C1 EF 8F C4 //回应了,一个命令就回应了... ...
- asp.net 分页-自己写分页控件
去年就发表过asp.net 分页-利用后台直接生成html分页 ,那种方法只是单纯的实现了分页,基本不能使用,那时就想写个自己的分页控件,无奈能力有限.最近有点时间了,就自己做出了这个分页控件.我承认 ...
- _vimrc默认配置
"不使用兼容vi的模式set nocompatible source $VIMRUNTIME/vimrc_example.vimsource $VIMRUNTIME/mswin.vimbeh ...
- noi 2989 糖果
题目链接:http://noi.openjudge.cn/ch0206/2989/ 首先,数据很大,直接用背包会re. 这里增加的是对%k 的余数维度.f[i][j] 表示前 i 种糖果取到总颗数模 ...
- Codeforces Round #374 (div.2)遗憾题合集
C.Journey 读错题目了...不是无向图,结果建错图了(喵第4样例是变成无向就会有环的那种图) 并且这题因为要求路径点尽可能多 其实可以规约为限定路径长的拓扑排序,不一定要用最短路做 #prag ...