hdu 2102 A计划(BFS,基础)
//要仔细写的BFS,着重对#穿越的处理哦;
//花了几个小时终于把这道简单的BFS给弄好了,我果然还需要增加熟练度,需要再仔细一些;
//代码有点乱,但我不想改了,,,,,
#include<stdio.h>
#include<string.h>
#include<queue>
#include<algorithm>
using namespace std;
struct tt
{
int x,y,step,floor;
};
int visit[][][],n,m,t;
char map1[][],map2[][];
queue <tt> q;
int xx[]={-,,,};
int yy[]={,,,-}; int bfs()
{
int i,flag;
tt front,temp;
temp.x=;temp.y=;temp.step=;temp.floor=;
q.push(temp);
visit[][][]=;
while(!q.empty())
{
front=q.front();
q.pop();
for(i=;i<;i++)
{ temp.x=front.x+xx[i];
temp.y=front.y+yy[i];
temp.step=front.step+;
temp.floor=front.floor;
if(temp.x>=&&temp.x<n&&temp.y>=&&temp.y<m)
{
if(temp.floor==&&visit[temp.x][temp.y][]==&&map1[temp.x][temp.y]!='*')
{
flag=;
visit[temp.x][temp.y][]=;
if(map1[temp.x][temp.y]=='P')
return temp.step; if(map1[temp.x][temp.y]=='#')
{
flag=;
if(map2[temp.x][temp.y]=='P')
return temp.step;
else if(map2[temp.x][temp.y]=='.'&&visit[temp.x][temp.y][]==)
{
temp.floor=;
q.push(temp); }
visit[temp.x][temp.y][]=;
}
if(flag==)
q.push(temp);
}
else if(temp.floor==&&visit[temp.x][temp.y][]==&&map2[temp.x][temp.y]!='*')
{
flag=; if(map2[temp.x][temp.y]=='P')
return temp.step; if(map2[temp.x][temp.y]=='#')
{
flag=;
if(map1[temp.x][temp.y]=='P')
return temp.step;
else if(map1[temp.x][temp.y]=='.'&&visit[temp.x][temp.y][]==)
{
temp.floor=;
q.push(temp); }
visit[temp.x][temp.y][]=;
} visit[temp.x][temp.y][]=;
if(flag==)
q.push(temp);
} }
}
}
return t+;
} int main()
{
int T,i,ans;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&n,&m,&t);
for(i=;i<n;i++)
{
scanf("%s",map1[i]);
}
for(i=;i<n;i++)
{
scanf("%s",map2[i]);
}
memset(visit,,sizeof(visit));
while(!q.empty())
q.pop();
ans=bfs();
if(ans<=t)
printf("YES\n");
else
printf("NO\n");
}
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 题目大意:公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传输 ...
随机推荐
- Codevs 3231 小吃
时间限制: 1 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题目描述 Description 这里简直是吃货的天堂,小吃太多了.数不胜数. 假设岛上有N种小吃,每种体积Vi, ...
- [GeekBand] C++ 高级编程技术 (1)
一.类型转换 class Fraction { public: explicit Fraction(int num, int den=1) : m_numerator(num), m_denomina ...
- PSP编程初探 Hello World
自己有一台PSP2000,玩了这么长时间的游戏,所以打算去探究一下PSP这个平台的程序的构建方式. 在网上搜了很多资料,感觉能用上的不多,毕竟这太小众了,通过自己的探索,总结了一下. 先搭建MinGW ...
- 字节的高低位知识,Ascii,GB2312,UNICODE等编码的关系与来历
很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节". 再后来,他们又做了一些可以处理 ...
- IOS绘图
#import "ViewController.h" #import "DrawView.h" @interface ViewController () @pr ...
- float,double和decimal的精度问题
先标注一个音标,因为我老是读错:decimal ['desɪml] 精度对比: 类型 CTS 类型 描述 有效数字 范围 float System.Single 32-bit single-preci ...
- Windows phone 中一些实用的控件
一.TextBlock:这个控件其实就是Label控件. <TextBlock x:Name="PageTitle" Text="page name" M ...
- LINQ技巧:如何通过多次调用GroupBy实现分组嵌套
问题如上,解决如下,目标在最下面:结果: using System; using System.Linq; using System.Collections.Generic; namespace Co ...
- C语言的sizeof
今天帮同学想用C实现数组的折半查找,本来算法挺简单的,可是折腾了好几个小时才发现问题在哪,这个sizeof坑人不浅啊. #include<stdio.h> void m(int []); ...
- MVC中System.InvalidOperationException: 传入字典的模型项的类型为“XXX”,但此字典需要类型“XXA”的模型项
出现此类错误的一个原因是Controller传过去的Model和View中的Model不是同一个Model