逃离迷宫(HDU 1728 BFS)
逃离迷宫
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 21384 Accepted Submission(s): 5180
第1行为两个整数m, n (1 ≤ m, n ≤ 100),分别表示迷宫的行数和列数,接下来m行,每行包括n个字符,其中字符'.'表示该位置为空地,字符'*'表示该位置为障碍,输入数据中只有这两种字符,每组测试数据的最后一行为5个整数k, x1, y1, x2, y2 (1 ≤ k ≤ 10, 1 ≤ x1, x2 ≤ n, 1 ≤ y1, y2 ≤ m),其中k表示gloria最多能转的弯数,(x1, y1), (x2, y2)表示两个位置,其中x1,x2对应列,y1, y2对应行。
5 5
...**
*.**.
.....
.....
*....
1 1 1 1 3
5 5
...**
*.**.
.....
.....
*....
2 1 1 1 3
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <iostream>
#include <queue>
using namespace std;
int dx[]={,,-,},dy[]={,-,,};
char map[][];
int ans[][];
int m,n,k;
int x01,x02,y01,y02;
struct node
{
int x,y;
int dix,diy;
int num;
};
bool bfs()
{
int i,j;
queue<node> Q;
node p,u;
p.x=y01,p.y=x01;
p.num=-;
p.dix=p.diy=-;
Q.push(p);
while(!Q.empty())
{
p=Q.front();
Q.pop();
if(p.num>ans[p.x][p.y]||p.num>k)
continue;
else
ans[p.x][p.y]=p.num;
if(p.x==y02&&p.y==x02)
return ;
for(i=;i<;i++)
{
u.x=p.x+dx[i];
u.y=p.y+dy[i];
u.dix=dx[i],u.diy=dy[i];
u.num=p.num+;
if(u.x<||u.y<||u.x>m||u.y>n||map[u.x][u.y]=='*')
continue;
if(dx[i]==p.dix&&dy[i]==p.diy)
{
u.num--;
Q.push(u);
}
else
Q.push(u);
}
}
return ;
}
int main()
{
int t,i,j;
freopen("in.txt","r",stdin);
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&m,&n);
getchar();
for(i=;i<=m;i++)
{
for(j=;j<=n;j++)
scanf("%c",&map[i][j]);
getchar();
}
scanf("%d%d%d%d%d",&k,&x01,&y01,&x02,&y02);
for(i=;i<=m;i++)
for(j=;j<=n;j++)
ans[i][j]=;
if(bfs())
printf("yes\n");
else
printf("no\n");
}
return ;
}
逃离迷宫(HDU 1728 BFS)的更多相关文章
- 逃离迷宫 HDU - 1728(bfs)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu - 1728逃离迷宫 && hdu - 1175 连连看 (普通bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1728 这两道题花了一下午的时候调试,因为以前做过类似的题,但是判断方向的方法是错的,一直没发现啊,真无语. 每个 ...
- hdu 1728 bfs **
简单bfs,记录好状态即可 #include<cstdio> #include<iostream> #include<algorithm> #include< ...
- 逃离迷宫 HDU1728 (bfs)
和连连看非常相似 都是求转向的BFS 改了一下就上交了... #include<cstdio> #include<cstring> #include<algorith ...
- HDU 1728:逃离迷宫(BFS)
http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有 ...
- hdu 1728 逃离迷宫 bfs记转向
题链:http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Mem ...
- hdu 1728 逃离迷宫 bfs记步数
题链:http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Mem ...
- hdu 1728 逃离迷宫 (BFS)
逃离迷宫 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- HDU 1728 逃离迷宫(DFS||BFS)
逃离迷宫 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可 ...
随机推荐
- ucos 创建 空闲任务的目的
几乎任何操作系统都需要有空闲任务. 因为CPU(提供CPU级休眠的不算)没办法停下来,尤其是嵌入式系统这一块. CPU停下来的唯一情况就是断电了,而要保持操作系统任何时候都能及时的对外做出响应,就必须 ...
- build.prop修改详细说明
用RE进入/system/挂载读写,找到build.prop复制到/sdcarrd进行修改比较保险.也可以挂载读写后,直接选择用文本编辑器打开,进行编辑.乱改有风险,修改需谨慎.1.# begin b ...
- 安装Hadoop集群的最快的软件
Quick Hadoop是一款安装Hadoop集群的桌面软件,只需要点两下鼠标,一分钟之内安装Hadoop到集群上,超快! 还在每台主机的Shell里一行一行地敲安装Hadoop的命令?别苦逼了! 用 ...
- QT下资源使用和资源占用…(可以动态加载资源文件,这样不占内存)
原文地址:关于QT下资源使用和资源占用内存过多的问题作者:技术成就梦想 最近研究了一下如何从外部动态调用图片的问题,从而研究了图片资源的使用方法.网上最常见的帖子是这个,感觉总结的还不错. h ...
- VMCloud云平台 系列博文
VMCloud云平台 系列博文http://blog.51cto.com/zt/644http://blog.51cto.com/zt/650 http://ljbaby.blog.51cto.com ...
- Linux sleep命令 和 wait命令
man sleep: SLEEP(1) User Commands SLEEP(1) NAME sleep - delay for a specified amount of time SYNOPSI ...
- intel安装mac os
一.变色龙: 1.http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1518901&extra=page%3D1%26orderby ...
- windows上安装winsshd
winsshd下载地址:http://www.bitvise.com/ssh-server-download 安装后默认配置即可使用:
- NOI2012 魔幻棋盘
http://www.lydsy.com/JudgeOnline/problem.php?id=2877 二维线段树. 好恶...... B类数据: 棋盘是一维的. 我们有一个结论: $gcd(a_{ ...
- 使用Python,字标注及最大熵法进行中文分词
使用Python,字标注及最大熵法进行中文分词 在前面的博文中使用python实现了基于词典及匹配的中文分词,这里介绍另外一种方法, 这种方法基于字标注法,并且基于最大熵法,使用机器学习方法进行训练, ...