HDU/HDOJ 1253 胜利大逃亡 广度优先搜索算法 迷宫寻路
来源:互联网 发布:绝地求生辅助网站源码 编辑:程序博客网 时间:2024/05/22 14:54
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1253
思路:从两维扩展到了三维,使用了三维数组,关于三维数组的理解,可以自己去google,无非就是从平面扩展到了空间,方向也成了6个,前,后,左,右,上,下,其他的都不变,注意一下坑爹的边缘数据就可以了。
#include <iostream>#include <string>#include <cstdio>#include <cmath>#include <vector>#include <algorithm>#include <sstream>#include <cstdlib>#include <fstream>#include <queue>using namespace std;struct node{int x,y,z,step;};queue<node> Q;//bool visit[51][51][51]; //优化了空间 int maze[51][51][51];int dir[6][3]={{-1,0,0},{1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};//六个方向 int m,n,k,t;bool isbound(int a,int b,int c){ //边界判断 if(a<0 || a>=m || b<0 || b>=n ||c<0 ||c>=k)return true;return false;}void bfs(){if(maze[m-1][n-1][k-1]==1) {cout<<-1<<endl;return ;} //特殊位置 if(maze[0][0][0]==0&&m*n*k==1){ cout<<-1<<endl;return ;} node p,q;p.x=0;p.y=0;p.z=0;p.step=0;maze[0][0][0]=1;Q.push(p);while(!Q.empty()){p=Q.front();Q.pop();if(p.x==m-1&&p.y==n-1&&p.z==k-1 &&p.step<=t){cout<<p.step<<endl;return ;}for(int i=0;i<6;i++){q.x=p.x+dir[i][0];q.y=p.y+dir[i][1];q.z=p.z+dir[i][2];if(isbound(q.x,q.y,q.z))continue;if(maze[q.x][q.y][q.z]==1)continue;//if(visit[q.x][q.y][q.z])continue;q.step=p.step+1;//visit[q.x][q.y][q.z]=1; 内存优化 maze[q.x][q.y][q.z]=1;Q.push(q);}}cout<<-1<<endl;}int main(){//ifstream fin;//fin.open("data1.txt");int c;//cin>>c;scanf("%d",&c);while(c--){//cin>>m>>n>>k>>t; //大规模输入还是用scanf不超时 scanf("%d %d %d %d",&m,&n,&k,&t);for(int i=0;i<m;i++)for(int j=0;j<n;j++)for(int s=0;s<k;s++)scanf("%d",&maze[i][j][s]);while(!Q.empty())Q.pop();//memset(visit,0,sizeof(visit));//visit[0][0][0]=1;bfs();}return 0;}
- HDU/HDOJ 1253 胜利大逃亡 广度优先搜索算法 迷宫寻路
- HDU--1253---胜利大逃亡 广度优先搜索
- HDU 1253 胜利大逃亡 广度优先搜索
- HDU 1253 胜利大逃亡(简单三维广度优先搜索)
- 杭电1253HDU acm---胜利大逃亡----BFS广度优先算法实现
- 九度OJ 教程86 广度优先搜索解决迷宫问题之《胜利大逃亡》
- 题目1456:胜利大逃亡(广度优先搜索)
- 胜利大逃亡——广度优先搜索(BFS)
- hdu 1429 胜利大逃亡(续)【广度优先搜索+状态压缩】
- HDOJ--1253--胜利大逃亡【搜索】
- 杭电1253--胜利大逃亡(广度优先搜…
- hdu 1253 胜利大逃亡(搜索)
- hdoj 1253 胜利大逃亡 宽度优先遍历
- HDOJ 1253 胜利大逃亡
- HDOJ 1253 胜利大逃亡
- HDOJ 胜利大逃亡 1253
- hdoj 1253 胜利大逃亡
- hdoj-【1253 胜利大逃亡】
- linux内核同步之每CPU变量、原子操作、内存屏障、自旋锁
- 测试cpu的简单工具-dhrystone
- UVa 516-Prime Land
- 读写信号量,读写锁,顺序锁
- php学习(三)遍历数组的方法
- HDU/HDOJ 1253 胜利大逃亡 广度优先搜索算法 迷宫寻路
- 计算几何专项:UVa 588
- USACO/rockers(译 by Maigo Akisame) Raucous Rockers“破锣摇滚”乐队
- iOS UITextField 获得焦点后,阻止弹出键盘事件,显示时间选择器
- [OOAD]面向对象设计简化流程
- MySQL存储过程实例
- (一)单例模式详解
- Mysql中批量删除相同表前缀的数据表 sql语句
- 虚函数