博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1253 胜利大逃亡(BFS)
阅读量:3897 次
发布时间:2019-05-23

本文共 1664 字,大约阅读时间需要 5 分钟。

这道题本身是不难的,套用bfs模板就行。可是就是因为自己的一点点小疏忽,把一个x错写成了y,导致找了半天的BUg,苦恼苦恼。。。(大伙们一定要仔细啊!!)

题目描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include
#include
#include
#include
#include
#include
#include
using namespace std;//对于BFS来说,需要有队列的参与,每次都是进队,同理这道题的bfs的参数是三个坐标,但是会在队列中多一个时间的坐标,用来表示现在走了多久//每次进队列的时候,都是之前那个队列出来的时间加一//然后当然还需要一个三维数组来存xyz,和一个数组来判断有没有被访问过int map[50][50][50];bool make[50][50][50];//一个是用以输入,一个是用以判断int a,b,c,t;//表示的就是坐标位置//然后创建一个结构体用来存数据struct M{ int x,y,z,t;//分别代表三个坐标和时间};bool judge(int x,int y,int z){ //写一个判断是否可以选这个位置的函数 //把越界单独写出来吧 if(x<0||x>=a||y<0||y>=b||z<0||z>=c) return false; if(map[x][y][z]==0&&make[x][y][z]==false) return true;//如果这个地方是路,并且没有被访问过 return false;}//还要写三个数组用来(其实直接用一个二维数组就行)int stepx[6]={ 0,0,0,0,1,-1};int stepy[6]={ 0,0,1,-1,0,0};int stepz[6]={ 1,-1,0,0,0,0};int BFS(int x,int y,int z,int t){ //这里返回值是int 因为需要返回对应的时间 //首先让他进队吧,可是这个时间怎么算呢,那我的想法就是这里再加一个时间 //先创建一个队列 queue
q; M temp; temp.x=x; temp.y=y; temp.z=z; temp.t=t; //然后让这个temp进队列 q.push(temp); while(!q.empty()){ //在他非空的情况之下,然后删去队头 temp=q.front();//取出对头元素 //这里可以有一个判断 if(temp.x==a-1&&temp.y==b-1&&temp.z==c-1) return temp.t; q.pop(); // printf("%d%d%d ",temp.x,temp.y,temp.z); for(int i=0;i<6;i++){ //开始判断这几个位置 int newx=temp.x+stepx[i]; int newy=temp.y+stepy[i]; int newz=temp.z+stepz[i]; // printf("%d%d%d ",newx,newy,newz); if(judge(newx,newy,newz)){ //如果这个合理的话,那就,把他的t加一,并且加入队列,这里创建了一个新的结构体,用来加入队列,还要出示话 make[newx][newy][newz]=true; M gg; gg.x=newx; gg.y=newy; gg.z=newz;//找了半天,问题在这啊!! gg.t=temp.t+1;//这里是需要注意的 //然后入队 q.push(gg); } } } return -1;}int main(){ int k,time; scanf("%d",&k); while(k--){ scanf("%d%d%d%d",&a,&b,&c,&time); //开始初始化 for(int i=0;i

转载地址:http://cyfen.baihongyu.com/

你可能感兴趣的文章
Top 10 “Yum” installables to be productive as a developer on Red Hat Enterprise Linux
查看>>
[小技巧] Vim 如果去除 “existing swap file” 警告
查看>>
如何在linux下检测内存泄漏
查看>>
十年生聚,Vim 8.0 发布了!
查看>>
【演歌】加賀の女 歌词翻译
查看>>
東京音頭 (东京音头) 歌词翻译
查看>>
Windows 7 下登录界面里 Ctrl + Alt + Del 无法使用
查看>>
惠山赏菊 & 梅园赏桂
查看>>
[小技巧] cat /proc/modules 显示的地址为 0
查看>>
[游戏] chrome 的小彩蛋
查看>>
napi
查看>>
_GNU_SOURCE和__USE_GNU的差别
查看>>
Linux 有了 “DTrace”
查看>>
Linux 系统中僵尸进程
查看>>
一个 2 年 Android 开发者的 18 条忠告
查看>>
标志性文本编辑器 Vim 迎来其 25 周年纪念日
查看>>
[小技巧] chrome 的 vim 插件
查看>>
在 Linux 中查看你的时区
查看>>
[小技巧] [trac] Fix AttributeError: 'NullTranslations' object has no attribute 'add'
查看>>
[小技巧] Mac OS X上键盘的键位重映射
查看>>