Poj(2225),三维BFS
题目链接:http://poj.org/problem?id=2225
这里要注意的是,输入的是坐标x,y,z,那么这个点就是在y行,x列,z层上。
我竟然WA在了结束搜索上了,写成了输出s.step.我要调疯了。
#include <stdio.h>
#include <queue>
#include <string.h> using namespace std; struct Point
{
int x,y,z;
int step;
} points[]; char maps[][][];
bool vis[][][]; ///上下前后左右
int to[][]= {{,,},{-,,},{,,},{,-,},{,,-},{,,}}; int main()
{
char str[];
while(scanf("%s",str)!=EOF)
{
memset(vis,false,sizeof(vis)); int n;
scanf("%d",&n);
for(int i=; i<n; i++)
for(int j=; j<n; j++)
scanf("%s",maps[i][j]); int x1,y1,z1; ///x 行,y列,z层
int x2,y2,z2;
scanf("%d%d%d%d%d%d",&y1,&x1,&z1,&y2,&x2,&z2); char tmp[];
scanf("%s",tmp); queue<Point> Q;
Point s,next;
s.x = x1;
s.y = y1;
s.z = z1;
s.step = ;
Q.push(s);
vis[s.z][s.x][s.y] = true;
int ans = ;
bool flag = false; while(!Q.empty())
{
Point f;
f = Q.front();
Q.pop();
if(f.x==x2&&f.y==y2&&f.z==z2)
{
flag = true;
ans = f.step;
break;
}
for(int i=; i<; i++)
{
next.x = f.x + to[i][];
next.y = f.y + to[i][];
next.z = f.z + to[i][]; if(next.x<||next.x>=n||next.y<||next.y>=n||next.z<||next.z>=n)
continue;
if(vis[next.z][next.x][next.y]||maps[next.z][next.x][next.y]=='X')
continue; next.step = f.step + ;
//printf("%d %d %d ",next.x,next.y,next.z);
//printf("%d\n",next.step);
vis[next.z][next.x][next.y] = true;
Q.push(next);
}
}
if(flag)
printf("%d %d\n",n,ans);
else printf("NO ROUTE\n");
}
return ;
}
Poj(2225),三维BFS的更多相关文章
- POJ 2251 三维BFS(基础题)
Dungeon Master Description You are trapped in a 3D dungeon and need to find the quickest way out! Th ...
- POJ 2251 Dungeon Master --- 三维BFS(用BFS求最短路)
POJ 2251 题目大意: 给出一三维空间的地牢,要求求出由字符'S'到字符'E'的最短路径,移动方向可以是上,下,左,右,前,后,六个方向,每移动一次就耗费一分钟,要求输出最快的走出时间.不同L层 ...
- POJ 2049— Finding Nemo(三维BFS)10/200
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u013497151/article/details/29562915 海底总动员.... 这个题開始 ...
- POJ.2251 Dungeon Master (三维BFS)
POJ.2251 Dungeon Master (三维BFS) 题意分析 你被困在一个3D地牢中且继续寻找最短路径逃生.地牢由立方体单位构成,立方体中不定会充满岩石.向上下前后左右移动一个单位需要一分 ...
- hdu 1240:Asteroids!(三维BFS搜索)
Asteroids! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- AOJ.866 飞越原野 (三维BFS)
AOJ.866 飞越原野 (三维BFS) 题意分析 点我挑战题目 相比于普通的BFS,要多一维来记录当前剩余的体力.而且还要额外的一层循环来处理,飞过的路程. 代码总览 #include <io ...
- SDUT OJ 1124 飞越原野 (三维BFS练习)
飞跃原野 nid=24#time" title="C.C++.go.haskell.lua.pascal Time Limit5000ms Memory Limit 65536K ...
- HDU 1240——Asteroids!(三维BFS)POJ 2225——Asteroids
普通的三维广搜,须要注意的是输入:列,行,层 #include<iostream> #include<cstdio> #include<cstring> #incl ...
- POJ 2251 Dungeon Master (三维BFS)
题目链接:http://poj.org/problem?id=2251 Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total S ...
随机推荐
- centos7-网络与防火墙常用命令
1.网络配置 vi /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO="static" IPADDR=192.168.163 ...
- c语言中有关0和1的运算问题
/*有关0和1 的总结 最近做题总是混淆0 和 1 对于/ 和 %运算时候的结果怎么算 所以就上机试验了一番 结论: c语言中,0/任何数都为0 0%任何数都为0 1/任何数都为0 1%任何数都余1 ...
- 晶振电路的设计-AN2867学习
一 石英晶体的等效电路.带宽: FS~FA之间就是并联带宽,越窄稳定性越好.其中Fs.Fa为Lm/Rm/Cm电抗分别为0和无穷大时的谐振频率).Fp为工作频率(通过调整负载电容CL来达到中心频率) 起 ...
- POI 按word模版生成合同并生成PDF
功能需求:根据用户给的word版本合同文件.docx,实现模版替换功能. 如: 功能:支持段落和表格里的文字替换,还可以支持表格替换.如果需要段落需要换行用<br>隔开如:身份证<b ...
- inventor安装不了
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- Trace Logging Level
Trace In functions which support this level, details every parameter and operation to help diagnose ...
- 如何使用python将二维数组去重呢?
二维数组的去重,能和一维的方法类似吗?import numpyc=np.array(((1,2),(3,4),(5,6),(7,8),(7,8),(3,4),(1,2)))print('二维数组:\n ...
- Collections练习之按照字符串长度进行排序
不多说,直接上干货! 代码需求 想从 [abcde, cba, aa, zzz, cba, nbaa] 变成 [aa, cba, cba, zzz, nbaa, abcde] CollectionsD ...
- pat1016. Phone Bills (25)
1016. Phone Bills (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A long-di ...
- SQLSERVER 自增列,值突然增大1000
SQLSERVER 自增列,值突然增大1000https://blog.csdn.net/lichxi1002/article/details/40074247