hdu 2102 a计划问题。。 双层dfs问题
现据密探所报,公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传输机用#表示,墙用*表示,平地用.表示。骑士们一进入时空传输机就会被转到另一层的相对位置,但如果被转到的位置是墙的话,那骑士们就会被撞死。骑士们在一层中只能前后左右移动,每移动一格花1时刻。层间的移动只能通过时空传输机,且不需要任何时间。
5 5 14
S*#*.
.#...
.....
****.
...#.
..*.P
#.*..
***..
...*.
*.#..
#include<string.h>
#include<iostream>
using namespace std;
char mapp[2][11][11];
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int vis[2][11][11];
int flag;
int t,n,m;
void dfs(int x,int y,int cont,int revel)
{
int xx,yy,i;
if(flag==1) return;
if(mapp[revel][x][y]=='P')
{
if(cont<=t) flag=1;
return;
}
if(cont>=t) return;
for(i=0;i<4;i++)
{
xx=x+dir[i][0];
yy=y+dir[i][1];
if(vis[revel][xx][yy]==1||xx<=0||xx>n||yy<=0||yy>m||mapp[revel][xx][yy]=='*') continue;
if(mapp[revel][xx][yy]=='#')
{
if(mapp[1-revel][xx][yy]=='#'||mapp[1-revel][xx][yy]=='*') continue;
else
{
vis[revel][xx][yy]=1;
dfs(xx,yy,cont+1,1-revel);
vis[revel][xx][yy]=0;
}
}
else
{
vis[revel][xx][yy]=1;
dfs(xx,yy,cont+1,revel);
vis[revel][xx][yy]=0;
}
}
}
int main()
{
int c,i,j,k;
cin>>c;
while(c--)
{
cin>>n>>m>>t;
// memset(mapp,0,sizeof(mapp));
for(k=0;k<=1;k++)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
cin>>mapp[k][i][j];
}
}
}
flag=0;
memset(vis,0,sizeof(vis));
vis[0][1][1]=1;
dfs(1,1,0,0);
if(flag==1) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
hdu 2102 a计划问题。。 双层dfs问题的更多相关文章
- hdu 2102 A计划(优先队列+dfs)
改了好久,上午来实验室打出来了,运行就是不对,一直找啊找!还是没找到,最后突然停电了,打好的代码还没保存呢! 刚才来的时候又重新打了一遍!!!结果一个小小的错误wrong了好久!!! 在dfs值返回时 ...
- hdu 2102 A计划(双层BFS)(具体解释)
转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://acm.hdu.edu.cn/showproblem.php ...
- HDU 2102 A计划 (BFS或DFS)
题意:中文题. 析:是一个简单的搜索,BFS 和 DFS都可行, 主要是这个题有一个坑点,那就是如果有一层是#,另一个层是#或者*,都是过不去的,就可以直接跳过, 剩下的就是一个简单的搜索,只不过是两 ...
- HDU - 2102 A计划(双层BFS)
题目: 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验.魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老.年迈的国王正是心急如焚, ...
- 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 A计划 Time Limit: 3000/1000 MS (Java/Others) Me ...
- 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计划(搜索题,典型dfs or bfs)
A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU 2102 A计划 DFS与BFS两种写法 [搜索]
1.题意:一位公主被困在迷宫里,一位勇士前去营救,迷宫为两层,规模为N*M,迷宫入口为(0,0,0),公主的位置用'P'标记:迷宫内,'.'表示空地,'*'表示墙,特殊的,'#'表示时空传输机,走到这 ...
随机推荐
- Linux命令:ipcs/ipcrm命令
ipcs/ipcrm命令 是linux/uinx上提供关于一些进程间通信方式的信息,包括共享内存,消息队列,信号 多进程间通信常用的技术手段包括共享内存.消息队列.信号量等等,Linux系统下自带的 ...
- [Java/Reflect]使用反射机制获得一个对象的属性名和属性值
一个辅助对象,用于给属性排序 class KeyValue implements Comparable<KeyValue>{ String key; Object value; @Over ...
- TextView: android:ellipsize="marquee" 跑马灯效果无效的问题
今天练习的时候想实现一个文字的跑马灯效果,本来想自己手动实现的,不过突然想起来android里的TextView属性似乎自带了这个效果,叫: android:ellipsize ,平时都是把它的属性值 ...
- ADT中创建Android的Activity
去创建Activity New->Other->Android->Android Activity->BlankActivity: 输入对应的信息: 创建完毕后,可以看到新建了 ...
- html表格导出Excel的实例
1. 拼成出完整的HMTL的Table代码片段后,转成二进制byte[]类型并存入数据库中,供下载时调出来使用. System.Text.StringBuilder sb = new StringBu ...
- Python3基础 函数 参数为list可变类型时,使用append会影响到外部实参
Python : 3.7.3 OS : Ubuntu 18.04.2 LTS IDE : pycharm-community-2019.1.3 ...
- Python3基础 交换两个变量的值
Python : 3.7.3 OS : Ubuntu 18.04.2 LTS IDE : pycharm-community-2019.1.3 ...
- 深度学习:21天实战caffe学习资源-4-环境安装
使用anaconda3环境下的python2.7, 机器macos mojave 10.14 1.安装Xcode 首先现在app store中安装Xcode: 不然会有” framework not ...
- linux非root用户安装rabbitmq
因为rabbitmq是用erlang语言写的,所以装rabbitmq前第一步得先装erlang. 我们到erlang官网https://www.erlang.org/downloads下载安装包,最新 ...
- Python3入门(十三)——常用内置模块之URL模块urlib
见名知意,一系列用于URL的操作 当然了,主要是用于web爬虫等处理(发送Get/Post请求,处理响应等),暂不展开, 参考:https://www.liaoxuefeng.com/wiki/101 ...