博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图论 --- 三维空间bfs
阅读量:6837 次
发布时间:2019-06-26

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

 

【题目大意】

给你一个三维的迷宫,让你计算从入口走到出口最少步数。

 

【题目分析】

其实和二维迷宫还是一样的,还是用队列来做,由于BFS算法一般是不需要回溯的,所以我们就用不着还用一个visit数组来记录是否访问过,直接将走过的结点置为不可走就可。

 

//Memory   Time//  356K     32MS#include
#include
#include
#include
#include
#include
#include
using namespace std;struct Node{ int x,y,z; int step;};queue
que;char Map[50][50][50];int sx,sy,sz;int ex,ey,ez;int dir_x[]={-1,1,0,0,0,0};int dir_y[]={ 0,0,-1,1,0,0};int dir_z[]={ 0,0,0,0,1,-1};void read(int n,int row,int col){ int i,j,k; for(i=0;i
>Map[i][j][k]; if(Map[i][j][k]=='S') { sx=i; sy=j; sz=k; } else if(Map[i][j][k]=='E') { ex=i; ey=j; ez=k; } } getchar(); } getchar(); }}void BFS(){ Node q; q.x=sx; q.y=sy; q.z=sz; q.step=0; que.push(q); while(!que.empty()) { Node tp=que.front(); que.pop(); int x=tp.x; int y=tp.y; int z=tp.z; int step=tp.step; for(int i=0;i<6;i++) { int tx=x+dir_x[i]; int ty=y+dir_y[i]; int tz=z+dir_z[i]; if(Map[tx][ty][tz]=='.') { Node Q; Q.x=tx; Q.y=ty; Q.z=tz; Q.step=step+1; que.push(Q); Map[tx][ty][tz]='#'; } else if(tx==ex&&ty==ey&&tz==ez) { cout<<"Escaped in "<
<<" minute(s)."<
>n>>row>>col&&(n+row+col)) { while(!que.empty()) que.pop(); getchar(); read(n,row,col); BFS(); } return 0;}
View Code

 

 

 

转载于:https://www.cnblogs.com/crazyacking/p/3762946.html

你可能感兴趣的文章
通过button将form表单的数据提交到action层
查看>>
九度 1357 疯狂地Jobdu序列
查看>>
接口和抽象类对比
查看>>
memcached 常用命令及使用说明
查看>>
双链表
查看>>
.NET基础——数组
查看>>
解决 android 高低版本 webView 里内容 自适应屏幕的终极方法
查看>>
调用微信截图功能c# 截图带扩展名
查看>>
AC日记——830A - Office Keys
查看>>
实用js
查看>>
Linux的快速入门
查看>>
利用 Dolby® Digital Plus 提供优质音频体验
查看>>
【转载】27.SpringBoot和SpringMVC的区别
查看>>
Spring Mvc 实例
查看>>
MySQL深入理解
查看>>
三步快速解决dll冲突问题
查看>>
vue
查看>>
[JSOI2007]文本生成器
查看>>
Python基础算法综合:加减乘除四则运算方法
查看>>
《一面》
查看>>