[NWPU2016][寒假作业][正常版第三组]R&&HDU1240
2024-09-21 10:20:47
题意是有个三维的地图,从起点到终点的最短路径。用bfs做,不过这个题坑的地方在于,开三维数组你要搞清楚纬度的关系。a[i][j][h] i是层,j是行,h是列。然后坐标呢,又是列,行,层,所以如果要用sx,sy,sz,读取的时候要用 sz,sy,sx,的顺序读取。然后才能啊a[sx][sy][sz]这么用。。。这个搞了好久才搞清楚。。。好笨啊。不这么来也行,只要搞清楚行列层关系就好。
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <map>
#include <string>
#include <string.h>
#include <queue>
#include <vector>
#include <set>
#include <cmath>
#define inf 0x7fffffff
using namespace std;
char s[],w[][][],flag[][][],m[][][],e[];
int n,sx,sy,sz,gx,gy,gz;
int dir[][]={{,,},{-,,},{,,},{,-,},{,,},{,,-}};
struct p{
int x,y,z;
};
int bfs(){
queue<p> q;
p a;
a.x=sx,a.y=sy,a.z=sz;
flag[sx][sy][sz]=;
q.push(a);
while(q.size())
{
p b;
b=q.front();
q.pop();
if(b.x==gx&&b.y==gy&&b.z==gz) return ;
for(int i=;i<;i++)
{
int nx=b.x+dir[i][],ny=b.y+dir[i][],nz=b.z+dir[i][];
if(w[nx][ny][nz]=='O'&&!flag[nx][ny][nz]&&nx>&&nx<=n&&ny>&&ny<=n&&nz>&&nz<=n)
{
flag[nx][ny][nz]=;
p c;
c.x=nx,c.y=ny,c.z=nz;
q.push(c);
m[nx][ny][nz]=m[b.x][b.y][b.z]+;
}
}
}
return ;
}
int main()
{
while(scanf("%s%d",s,&n)!=EOF)
{
memset(flag,,sizeof(flag));
memset(m,,sizeof(m));
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
for(int h=;h<=n;h++)
{
scanf(" %c",&w[i][j][h]);
}
}
}
scanf("%d%d%d%d%d%d",&sz,&sy,&sx,&gy,&gz,&gx);
sx+=,sy+=,sz+=,gx+=,gy+=,gz+=;
scanf("%s",e);
if(bfs())
printf("%d %d\n",n,m[gx][gy][gz]);
else printf("NO ROUTE\n");
}
return ;
}
最新文章
- virtualBox上虚拟机和主机互联{}
- android sdk 安装排错
- HDU 5491 The Next(位运算)
- Akka(21): Stream:实时操控:人为中断-KillSwitch
- 读书笔记-你不知道的JS上-词法作用域
- OpenCV meanshift 图像分割代码
- javascript 调试 &; console.table()
- log4j警告:WARN Please initialize the log4j system properly 的解决方法
- scrapy爬虫学习系列二:scrapy简单爬虫样例学习
- DevExpress Grid使用checkBox选中的方法
- 我面试过没有上万人也有十几个,简历要这么写才有hr要你
- Django 2.0 URL新版配置介绍
- 一个模拟——抢票部分功能的 简单版(主要实例化一下 Lock 的使用)
- iOS 在 程序内调用手机上安装的地图软件进行导航
- Linux:使用rpcgen实现64位程序调用32位库函数
- Spring 测试
- 51nod 1239 欧拉筛模板
- CF 55 D. Beautiful numbers
- An existing resource has been found at location D:\Tomcat 7\apache-tomcat-7.0.55\webapps。。。
- 常量池之字符串常量池String.intern()