BFS和队列例题
来源:互联网 发布:井泵电机数据 编辑:程序博客网 时间:2024/05/18 00:04
poj2251Dungeon Master
最简单的BFS求最短距离,只是改一下方向数组就可以,二维数组改为三维数组
下面是AC代码
对了,下面用的c++队列,其实很简单,就只有几种操作:
先介绍队列的定义 queue<类型名>变量名,如
queue<int>q,queue或queue<node>que;(struct node(结构体类型));
1、 q.front() 取出队首元素
2、 q.empty() 判断是否为空,时空返回1
3、 q.pop() 删除队首元素
4、 q.push(变量)加入变量
1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 #include<queue> 5 #include<string> 6 #include<stack> 7 #include<cmath> 8 #include<cctype> 9 #include<iostream>10 #include<set>11 #include<algorithm>12 #include<ctime>13 #include<vector>14 using namespace std;15 #define mem(a) memset(a,0,sizeof(a))16 #define MAXN 100000000717 #define judge(x,y,z) !vis[x][y][z]&&map[x][y][z]!='#'&&x>=0&&x<l&&y>=0&&y<m&&z>=0&&z<n18 int d[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};19 bool vis[35][35][35];20 char map[35][35][35];21 int l,m,n;22 struct node23 {24 int x,y,z;25 int step;26 };27 int BFS(int x,int y,int z)28 {29 mem(vis);30 queue<node>q;31 node u;32 u.x=x;u.y=y;u.z=z;33 u.step=0;34 q.push(u);35 while(!q.empty())36 {37 u=q.front();38 if(map[u.x][u.y][u.z]=='E')return u.step;39 q.pop();40 int i;41 for(i=0;i<6;i++)42 {43 node v;44 v.x=u.x+d[i][0];v.y=u.y+d[i][1];45 v.z=u.z+d[i][2];46 if(judge(v.x,v.y,v.z))47 {48 vis[v.x][v.y][v.z]=true;49 v.step=u.step+1;50 q.push(v);51 }52 }53 }54 return 0;55 }56 int main()57 {58 while(~scanf("%d%d%d%*c",&l,&m,&n))59 {60 mem(map);61 if(!m&&!n&&!l)break;62 int i,j,k,sx,sy,sz;63 for(i=0;i<l;i++)64 for(j=0;j<m;j++){65 scanf("%s",map[i][j]);66 for(k=0;k<n;k++)67 {68 if(map[i][j][k]=='S')sx=i,sy=j,sz=k;69 }70 }71 int step=BFS(sx,sy,sz);72 if(step)printf("Escaped in %d minute(s).\n",step);73 else printf("Trapped!\n");74 }75 return 0;76 }
0 0
- BFS和队列例题
- BFS例题
- Uva10603 Fill 【隐式图bfs(优先队列)】【例题7-8】
- hdu 2717 bfs和队列。。
- BFS例题:A计划
- BFS例题详解
- BFS的基本例题
- 例题6-7 UVa122 Trees on the level(树&&队列BFS&&sscanf字符串转整数)
- 一道循环队列例题
- 优先队列例题
- bfs例题:血色先锋军
- BFS经典例题Isenbaev number
- BFS经典例题:Maze迷宫
- BFS经典例题合集
- 【经典优先队列例题整理】
- 单调队列实现与例题
- 迷宫求解非递归 DFS BFS(应用栈和队列)
- poj3278 Catch That Cow (BFS算法和队列)
- 第一篇 七月二十一
- HDU5288 OO’s Sequence(暴力枚举)
- HDU5294 Tricks Device(最大流+SPFA) 2015 Multi-University Training Contest 1
- NSFileManager和文件的判断操作、获取目录、文件创建和目录创建。
- 策略模式
- BFS和队列例题
- 子线程和主线程的通信问题
- Linux kernel 分析之七:内核启动-链接脚本
- UIButton 个人学习总结 (二)
- 【安卓基础三】adb命令
- 关于const引用、常量指针、指针常量的一些知识
- mac下gcc学习(一)
- shell 例程 —— 解决redis读取稳定性
- HDU 4604 Deque