博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
杭电1253--胜利的大逃亡(Bfs)
阅读量:5741 次
发布时间:2019-06-18

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

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1253

题意: 迷宫问题,  三维数组, 数据范围较大, Bfs较优。  PS-----> 堕落了几天, 是时候奋斗了,fighting!! 

//ac码:1669ms;#include 
#include
#include
#include
using namespace std;int map[55][55][55]; int ac[6][3] = {
0, 0, 1, 0, 0, -1, 0, 1, 0, 0, -1, 0, 1, 0, 0, -1, 0, 0};struct Maze{ int x, y, z, step;}r, s, t;int a, b, c, T;int Bfs(int x, int y, int z){ queue
Q; r.x = x; r.y = y; r.z = z; r.step = 0; Q.push(r); map[x][y][z] = 1; while(!Q.empty()) { s = Q.front(); Q.pop(); for(int i = 0; i < 6; i++) { t.x = s.x + ac[i][0]; t.y = s.y + ac[i][1]; t.z = s.z + ac[i][2]; t.step = s.step + 1; if(t.x >= 0 && t.x < a && t.y >= 0 && t.y < b && t.z >= 0 && t.z < c && map[t.x][t.y][t.z] == 0) { if(t.x == a - 1 && t.y == b - 1 && t.z == c - 1 && t.step <= T) return t.step; else { map[t.x][t.y][t.z] = 1; Q.push(t); } } } } return -1;} int main(){ int k; scanf("%d", &k); while(k--) { scanf("%d %d %d %d", &a, &b, &c, &T); for(int i = 0; i < a; i++) for(int j = 0; j < b; j++) for(int k = 0; k < c; k++) //cin >> map[i][j][k]; scanf("%d", &map[i][j][k]); int ans = Bfs(0, 0, 0); printf("%d\n", ans); } return 0;}

 

转载于:https://www.cnblogs.com/soTired/p/4775436.html

你可能感兴趣的文章
python读excel写入mysql小工具
查看>>
如何学习区块链
查看>>
搜索问题的办法
查看>>
微信分销系统商城营销5大重点
查看>>
求职准备 - 收藏集 - 掘金
查看>>
htm5新特性(转)
查看>>
Linux-Centos启动流程
查看>>
php 设计模式
查看>>
后端技术精选 - 收藏集 - 掘金
查看>>
Laravel 服务容器
查看>>
mac安装kubernetes并运行echoserver
查看>>
多页架构的前后端分离方案(webpack+express)
查看>>
算法(第4版) Chapter 1
查看>>
前端技术选型的遗憾和经验教训
查看>>
“亲切照料”下的领域驱动设计
查看>>
SRE工程师到底是做什么的?
查看>>
解读:Red Hat为什么收购Ansible
查看>>
Ossim下的安全合规管理
查看>>
DelphiWebMVC框架下BPL热部署实现
查看>>
C++与MySQL的冲突
查看>>