HDU 2102 A计划(BFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102
题目大意:公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传输机用#表示,墙用*表示,平地用.表示。骑士们一进入时空传输机就会被转到另一层的相对位置,但如果被转到的位置是墙的话,那骑士们就会被撞死。骑士们在一层中只能前后左右移动,每移动一格花1时刻。层间的移动只能通过时空传输机,且不需要任何时间。每个测试数据的前一行有三个整数N,M,T。 N,M迷宫的大小N*M(1 <= N,M <=10)。T如上所意。接下去的前N*M表示迷宫的第一层的布置情况,后N*M表示迷宫第二层的布置情况。如果骑士们能够在T时刻能找到公主就输出“YES”,否则输出“NO”。
解题思路:em....还是bfs,只是可以通过‘#’上下传送,其他都差不多。需要注意:当传送过去是‘*’(墙),或者传送过去是‘#’(传送机)这两种都算是传送失败了。
代码:
- #include<cstdio>
- #include<cstring>
- #include<queue>
- using namespace std;
- const int N=;
- int m,n,T;
- int d[][]={{,},{,-},{,},{-,}};
- char map[N][N][];
- int vis[N][N][];
- struct node{
- int x,y,z,step;
- }pre,now;
- bool bfs(){
- queue<node>q;
- now.x=now.y=now.z=;
- now.step=;
- q.push(now);
- while(!q.empty()){
- pre=q.front();
- q.pop();
- for(int i=;i<;i++){
- int xx=pre.x+d[i][];
- int yy=pre.y+d[i][];
- int zz=pre.z;
- int t=pre.step+;
- if(xx<||yy<||zz<||xx>n||yy>m||zz>||vis[xx][yy][zz]||map[xx][yy][zz]=='*')
- continue;
- vis[xx][yy][zz]=;
- if(map[xx][yy][zz]=='#'){
- if(zz==)
- zz++;
- else
- zz--;
- //注意除了墙,如果另一层是传送机也不行,传来传去无限循环啊~
- if(vis[xx][yy][zz]||map[xx][yy][zz]=='*'||map[xx][yy][zz]=='#')
- continue;
- vis[xx][yy][zz]=;
- }
- if(map[xx][yy][zz]=='P'){
- if(t<=T)
- return true;
- return false;
- }
- now.x=xx;
- now.y=yy;
- now.z=zz;
- now.step=t;
- q.push(now);
- }
- }
- return false;
- }
- int main(){
- int t;
- scanf("%d",&t);
- while(t--){
- memset(vis,,sizeof(vis));
- scanf("%d%d%d",&n,&m,&T);
- for(int k=;k<=;k++){
- if(k!=)
- getchar();
- for(int i=;i<=n;i++){
- getchar();
- for(int j=;j<=m;j++){
- scanf("%c",&map[i][j][k]);
- }
- }
- }
- if(bfs())
- puts("YES");
- else
- puts("NO");
- }
- return ;
- }
HDU 2102 A计划(BFS)的更多相关文章
- HDU 2102 A计划(BFS/DFS走迷宫)
A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- hdu 2102 A计划-bfs
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...
- HDU - 2102 A计划 (BFS) [kuangbin带你飞]专题二
思路:接BFS判断能否在限制时间内到达公主的位置,注意如果骑士进入传送机就会被立即传送到另一层,不会能再向四周移动了,例如第一层的位置(x, y, 1)是传送机,第二层(x, y, 2)也是传送机,这 ...
- HDU 2102 A计划 (BFS或DFS)
题意:中文题. 析:是一个简单的搜索,BFS 和 DFS都可行, 主要是这个题有一个坑点,那就是如果有一层是#,另一个层是#或者*,都是过不去的,就可以直接跳过, 剩下的就是一个简单的搜索,只不过是两 ...
- HDU 2102 A计划(两层地图加时间限制加传送门的bfs)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2102 A计划 Time Limit: 3000/1000 MS (Java/Others) Me ...
- hdu 2102 A计划
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2102 A计划 Description 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸 ...
- hdu - 2102 A计划 (简单bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=2102 题目还是不难,注意起点一定是(0,0,0),然后到达P点时间<=t都可以. 用一个3维字符数组存储图 ...
- hdu 2102 A计划(双层BFS)(具体解释)
转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://acm.hdu.edu.cn/showproblem.php ...
- HDU - 2102 A计划 【BFS】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2102 思路 题目有两个坑点 0.Output 说 能在T时刻 找到公主 就输出 YES 但实际上 只要 ...
随机推荐
- CODECHEF Chef and Churus 解题报告
[CODECHEF]Chef and Churus Description 有一个长度为\(n\)的数组\(A\),有\(n\)个函数,第\(i\)个函数的值为\(\sum_{j=l_i}^{r_i} ...
- 洛谷 P2900 [USACO08MAR]土地征用Land Acquisition 解题报告
P2900 [USACO08MAR]土地征用Land Acquisition 题目描述 约翰准备扩大他的农场,眼前他正在考虑购买N块长方形的土地.如果约翰单买一块土 地,价格就是土地的面积.但他可以选 ...
- win7系统用笔记本共享wifi热点 让手机免费上网
之前一直在用这个方法把自己的笔记本变成一个wifi热点,让手机也可以直接连wifi上网,节省网费和路由器购买费. 其实就是开启了windows 7的隐藏功能:虚拟WiFi和SoftAP(即虚拟无线AP ...
- 保护程序猿滴眼睛---修改VS 2012 编辑器颜色
转载于http://blog.csdn.net/qing666888/article/details/8973216 字体,发现好多人选用 Consolas ...确实挺好看的. 然后 修改背景色: ...
- [ldap]ldap server安装以及图形化操作
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-a-basic-ldap-server-on ...
- oracle实用的sqlplus命令
有时候难免没有工具,得自己手动输入sqlplus命令 执行SQL文件:@sql文件,例如:@/home/myuser/sql/test.sql查看数据库存在的存储过程:Select object_na ...
- Java集合框架(set)
set继承自collection接口,其子类和子接口如下: set的共同特性:不能添加相同的元素,通常无法记住元素添加的顺序 1.HashSet类 判断两元素相同的标准:1.equals方法返回tru ...
- centos6.5 mqtt安装
CentOs 6.5 MQTT 安装部署 所需安装包: libwebsockets-v1.6-stable.tar.gz,mosquitto-1.4.8.tar.gz 1.安装依赖 # yum -y ...
- 逆推 Gym 101102J
题目链接:http://codeforces.com/gym/101102/problem/J 题目大意可以看这个人的:http://www.cnblogs.com/chen9510/p/593362 ...
- POJ 2007 Scrambled Polygon 极角序 水
LINK 题意:给出一个简单多边形,按极角序输出其坐标. 思路:水题.对任意两点求叉积正负判断相对位置,为0则按长度排序 /** @Date : 2017-07-13 16:46:17 * @File ...