HDU 1253 胜利大逃亡 【BFS】
来源:互联网 发布:sql check约束表达式 编辑:程序博客网 时间:2024/06/05 22:45
之前一直排错出不来,忘了在check函数里面判断该点是否已经走过了;
很套路的BFS,直接套模板就好了;
特别的这里需要两个结构体,将p存进q计算后,把q弹出来;
#include <stdio.h>#include <string.h>#include <queue>#include <iostream>using namespace std ;const int N = 60;int map[N][N][N];int vis[N][N][N];int nx[] = {1,-1,0,0,0,0}; int ny[] = {0,0,1,-1,0,0}; int nz[] = {0,0,0,0,1,-1}; int a , b , c ,ans,t;struct node{int x ;int y ;int z ;int step;};int abs(int x){if(x<0) return -x;else return x;}bool check(int i , int j , int k){if(i<0||j<0||k<0||i>=a||j>=b||k>=c||map[i][j][k]==1){return false;}return true;}int bfs(int x , int y , int z){int i ;queue<node>Q;node p ,q;p.x=x;p.y=y;p.z=z;p.step=0;vis[x][y][z]=1;Q.push(p);while(!Q.empty()){p=Q.front();Q.pop();if(p.x==a-1&&p.y==b-1&&p.z==c-1&&p.step<=t){return p.step;}for(i=0;i<6;i++){q=p;q.x+=nx[i];q.y+=ny[i];q.z+=nz[i];if(!vis[q.x][q.y][q.z]&&check(q.x,q.y,q.z)){q.step++;vis[q.x][q.y][q.z]=1;Q.push(q); }}}return -1;}int main(){int ncase;cin>>ncase;while(ncase--){memset(map,0,sizeof(map));memset(vis,0,sizeof(vis));int i , j , k ;cin>>a>>b>>c>>t;for(i=0;i<a;i++)for(j=0;j<b;j++)for(k=0;k<c;k++){scanf("%d",&map[i][j][k]);}ans=bfs(0,0,0);cout<<ans<<endl;}return 0 ;}
套路就是这样了,
0 0
- hdu 1253胜利大逃亡 bfs
- hdu 1253 胜利大逃亡 BFS
- [BFS] hdu 1253 胜利大逃亡
- hdu 1253 胜利大逃亡 (三维bfs)
- hdu 1253 胜利大逃亡 (bfs)
- hdu 1253 胜利大逃亡(BFS)
- HDU 1253 胜利大逃亡(BFS)
- HDU-1253 胜利大逃亡 (BFS)
- hdu 1253 胜利大逃亡 bfs
- hdu 1253bfs胜利大逃亡
- HDU 1253 胜利大逃亡 (BFS,剪枝)
- hdu 1253 胜利大逃亡(bfs)
- HDU 1253 胜利大逃亡(BFS)
- HDU 1253 胜利大逃亡(BFS)
- HDU 1253 胜利大逃亡 三维BFS
- HDU 1253 胜利大逃亡 【BFS】
- HDU 1253 -- 胜利大逃亡 bfs
- HDU--1253胜利大逃亡【BFS】
- BitmapFactory压缩图片
- linux及C++书籍推荐
- C#中HttpWebRequest的GetRequestStream执行的效率太低,甚至偶尔死掉
- 指針的檢測
- struts2 ResultType为chain的使用
- HDU 1253 胜利大逃亡 【BFS】
- hook模板x86/x64通用版(4)--CHook.cpp说明
- spring ApplicationContextAware的那些事儿
- 怎样学习才能拥有所谓“高并发”的经验?
- 116. Populating Next Right Pointers in Each Node && 117. II
- iOS命名规范
- leetcode104题 题解 翻译 C语言版 Python版
- 4269: 再见Xor 高斯消元求线性基
- c#之简单工厂设计模式