3维迷宫的bfs
来源:互联网 发布:海淘网转运 知乎 编辑:程序博客网 时间:2024/04/29 17:10
#include <stdio.h>#include <iostream>#include <cstring>#include <stdlib.h>#include <algorithm>#include <queue>#include <math.h>#define MAX 30#define INF 1e8using namespace std;int L,R,C;char maze[MAX][MAX][MAX];int d[MAX][MAX][MAX];int move1[6][3] = {{-1,0,0},{0,1,0},{1,0,0},{0,-1,0},{0,0,1},{0,0,-1}};int sx,sy,sz,ex,ey,ez;struct P{ int a,b,c;};void bfs(){ queue<P> que; P q,cq; q.a = sx,q.b = sy,q.c = sz; que.push(q); while (!que.empty()) { q = que.front(); que.pop(); for (int i = 0;i < 6;i++) { int nx = q.a+move1[i][0],ny = q.b+move1[i][1],nz = q.c+move1[i][2]; if((nx>=0&&nx<L)&&(ny>=0&&ny<R)&&(nz>=0&&nz<C)&&maze[nx][ny][nz] != '#'&&d[nx][ny][nz] == INF) { cq.a = nx,cq.b = ny,cq.c = nz; que.push(cq); d[nx][ny][nz] = d[q.a][q.b][q.c] + 1; } } }}int main(void){ while(scanf("%d %d %d",&L,&R,&C) != EOF&&(L||R||C)) { for (int i = 0;i < L;i++) { for (int j = 0;j < R;j++) { scanf("%s",maze[i][j]); } } for (int i = 0;i < L;i++) { for (int j = 0;j < R;j++) { for (int k = 0;k < C;k++) { if(maze[i][j][k] == 'S') sx = i,sy = j,sz = k; else if(maze[i][j][k] == 'E') ex = i,ey = j,ez = k; d[i][j][k] = INF; } } } d[sx][sy][sz] = 0; bfs(); if(d[ex][ey][ez] != INF) printf("Escaped in %d minute(s). \n",d[ex][ey][ez]); else cout<<"Trapped!"<<endl; } return 0;}一次就过- -松松无压力
1 0
- 3维迷宫的bfs
- 简单的BFS, 3D迷宫
- 迷宫问题的双向BFS
- BFS的应用-走迷宫
- 1280: 诡异的迷宫【BFS】
- uva532--3d迷宫--bfs
- BFS~~~迷宫
- BFS(迷宫)
- 迷宫-BFS
- BFS------迷宫
- 迷宫-BFS
- ACM:图的BFS,走迷宫
- BFS 迷宫的最短路径问题
- BFS:迷宫的最短路径
- BFS求迷宫的最短路径
- uva 11624 大火蔓延的迷宫 BFS
- BFS 模板 【迷宫的最短路径】
- 迷宫的最短路径 -- BFS
- 欢迎使用CSDN-markdown编辑器
- Leetcode023--计数和说出来
- TextView不依附ScrollView滚动
- error/utility.c/SystemCommand/2094.
- android中多个LinearLayout平分布局
- 3维迷宫的bfs
- vmstat详解
- android_58_service_remote_AIDL调用远程服务
- NPM常用命令
- LINUX命令总结
- 【前端学习连载日志】BOM顺利学完了
- android 4.4 以太网网络共享功能研究和实现
- c# 关于网站读取excel文档
- spark core 2.0 Executor ClassLoader