hdu1253(胜利大逃亡)
来源:互联网 发布:风险指数矩阵 编辑:程序博客网 时间:2024/05/01 21:22
题目链接:click here~
题目解析:比较简单的广搜,搜6个方向就可以了,不过搜索时要记得标记走过的结点,并且还要判断不能越界!一次就A了,写的代码比较繁琐,因为是初学搜索,没关系,会好起来的。其实一般的广搜模板都差不多。
代码如下:
#include<stdio.h>#include<string.h>#include<queue>using namespace std;struct node{ int x,y,z,time;};int visit[60][60][60];int map[60][60][60];int A,B,C,T;void bfs(int a,int b,int c){ memset(visit,0,sizeof(visit)); node node1,node2; queue<node>q; node1.x=a; node1.y=b; node1.z=c; node1.time=0; q.push(node1); visit[node1.x][node1.y][node1.z]=1; while(!q.empty()) { node2=q.front(); q.pop(); if(node2.x==A-1&&node2.y==B-1&&node2.z==C-1&&node2.time<=T) { printf("%d\n",node2.time); return; } node1.x=node2.x+1; node1.y=node2.y; node1.z=node2.z; if(!visit[node1.x][node1.y][node1.z]&&map[node1.x][node1.y][node1.z]==0&&node1.x>=0&&node1.x<A&&node1.y>=0&&node1.y<B&&node1.z>=0&&node1.z<C) { node1.time=node2.time+1; q.push(node1); visit[node1.x][node1.y][node1.z]=1; } node1.x=node2.x-1; node1.y=node2.y; node1.z=node2.z; if(!visit[node1.x][node1.y][node1.z]&&map[node1.x][node1.y][node1.z]==0&&node1.x>=0&&node1.x<A&&node1.y>=0&&node1.y<B&&node1.z>=0&&node1.z<C) { node1.time=node2.time+1; q.push(node1); visit[node1.x][node1.y][node1.z]=1; } node1.x=node2.x; node1.y=node2.y+1; node1.z=node2.z; if(!visit[node1.x][node1.y][node1.z]&&map[node1.x][node1.y][node1.z]==0&&node1.x>=0&&node1.x<A&&node1.y>=0&&node1.y<B&&node1.z>=0&&node1.z<C) { node1.time=node2.time+1; q.push(node1); visit[node1.x][node1.y][node1.z]=1; } node1.x=node2.x; node1.y=node2.y-1; node1.z=node2.z; if(!visit[node1.x][node1.y][node1.z]&&map[node1.x][node1.y][node1.z]==0&&node1.x>=0&&node1.x<A&&node1.y>=0&&node1.y<B&&node1.z>=0&&node1.z<C) { node1.time=node2.time+1; q.push(node1); visit[node1.x][node1.y][node1.z]=1; } node1.x=node2.x; node1.y=node2.y; node1.z=node2.z+1; if(!visit[node1.x][node1.y][node1.z]&&map[node1.x][node1.y][node1.z]==0&&node1.x>=0&&node1.x<A&&node1.y>=0&&node1.y<B&&node1.z>=0&&node1.z<C) { node1.time=node2.time+1; q.push(node1); visit[node1.x][node1.y][node1.z]=1; } node1.x=node2.x; node1.y=node2.y; node1.z=node2.z-1; if(!visit[node1.x][node1.y][node1.z]&&map[node1.x][node1.y][node1.z]==0&&node1.x>=0&&node1.x<A&&node1.y>=0&&node1.y<B&&node1.z>=0&&node1.z<C) { node1.time=node2.time+1; q.push(node1); visit[node1.x][node1.y][node1.z]=1; } } printf("-1\n");}int main(){ int icase; scanf("%d",&icase); while(icase--) { 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++) scanf("%d",&map[i][j][k]) ; bfs(0,0,0); } return 0;}
0 0
- hdu1253胜利大逃亡
- hdu1253胜利大逃亡
- hdu1253 胜利大逃亡
- hdu1253胜利大逃亡
- HDU1253胜利大逃亡
- hdu1253(胜利大逃亡)
- hdu1253 胜利大逃亡
- HDU1253-胜利大逃亡
- HDU1253-胜利大逃亡
- HDU1253 胜利大逃亡
- hdu1253 胜利大逃亡
- HDU1253:胜利大逃亡(BFS)
- hdu1253胜利大逃亡 (BFS)
- HDU1253:胜利大逃亡(BFS)
- HDU1253 胜利大逃亡 BFS
- hdu1253(胜利大逃亡)
- HDU1253 胜利大逃亡【BFS】
- hdu1253(胜利大逃亡)
- Using @Variable Functions in the Universe
- 视图和表的区别
- java 九九乘法表
- HashMap简介
- JS 数字,金额 用逗号 隔开(数字格式化)
- hdu1253(胜利大逃亡)
- 北京小姐
- linux内核 bus driver device
- Java重载与覆盖
- struts2和servlet共存的几种方法
- 互联网大型应用软件架构设想与推荐
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
- 基于TestNG 与Selenium 的自动化测试设计与实施
- linux问题总结