给出起点 终点 以及转弯次数 在<=转弯次数的条件 能否走到终点

Sample Input
2
5 5
...** // .可走 *不可走
*.**.
.....
.....
*....
1 1 1 1 3 //最大转弯次数 起始y 起始x ....
5 5
...**
*.**.
.....
.....
*....
2 1 1 1 3

Sample Output
no
yes

 #include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
using namespace std; int n , m , k;
int sx , sy ,ex , ey ;
char map[][] ;
bool v[][] ; struct node
{
int x ;
int y ;
int t ; //当前转弯次数
}; int dx[] = {,-,,} ;
int dy[] = {,,,-} ; int bfs()
{
queue<node> q ;
node now , temp ;
now.x = sx ;
now.y = sy ;
now.t = - ;
memset(v , , sizeof(v)) ;
v[sx][sy] = ;
q.push(now) ;
while(!q.empty())
{
now = q.front() ;
q.pop() ;
if (now.t >= k) //如果还没走到终点 转弯次数已经用完了 就不用再往下走了
continue ;
for (int i = ; i < ; i++)
{
temp.x = now.x + dx[i] ;
temp.y = now.y + dy[i] ;
temp.t = now.t + ;
while()
{
if (temp.x< ||temp.y< || temp.x>= n || temp.y>= m || map[temp.x][temp.y] == '*')
break ;
if (temp.x == ex && temp.y == ey)
return ;
if (!v[temp.x][temp.y])
{
q.push(temp) ;
v[temp.x][temp.y] = ;
}
temp.x += dx[i] ;
temp.y += dy[i] ;
}
}
}
return ;
} int main ()
{
//freopen("in.txt","r",stdin) ;
int T ;
scanf("%d" , &T) ;
while (T--)
{
scanf("%d %d" , &n , &m) ;
for (int i = ; i < n ; i++)
for (int j = ; j < m ; j++)
{
cin>>map[i][j] ;
}
scanf("%d%d%d%d%d" , &k , &sy , &sx , &ey , &ex) ;
sy-- ;
sx-- ;
ey-- ;
ex-- ;
if (bfs())
printf("yes\n") ;
else
printf("no\n") ; } return ;
}

hdu 1728 迷宫 给定最大转弯次数 (BFS)的更多相关文章

  1. hdu1728 逃离迷宫---转弯次数不超过k+BFS

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1728 题目大意: 给你一幅图,给出起点终点和最大转弯次数,判断是否能从起点到终点.'*'表示障碍物. ...

  2. HDU - 1728 逃离迷宫 【BFS】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1728 思路 BFS 一开始 从开始位置 往四周走 如果能走的话 这个时候 转弯次数都是0 我们的标记不 ...

  3. hdu 1728 逃离迷宫 BFS加优先队列 DFS()

    http://acm.hdu.edu.cn/showproblem.php?pid=1728 题意就是能否在规定的转弯次数内从起点走到终点.刚走时那步方向不算. 只会bfs(),但想到这题需要记录转弯 ...

  4. HDU 1728 逃离迷宫(DFS||BFS)

    逃离迷宫 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可 ...

  5. HDU 1728 逃离迷宫【BFS】

    题意:给出一个起点,一个终点,规定的转弯次数,问能否在规定的转弯次数内到达终点--- 这一题是学(看)习(题)的(解)@_@ 主要学了两个地方 一个是剪枝,如果搜到的当前点的转弯次数小于该点turn数 ...

  6. HDU 1728 逃离迷宫 BFS题

    题目描述:输入一个m*n的地图,地图上有两种点,一种是 . 表示这个点是空地,是可以走的,另一种是 * ,表示是墙,是不能走的,然后输入一个起点和一个终点,另外有一个k输入,现在要你确定能否在转k次弯 ...

  7. HDU 1728 逃离迷宫

    [题目描述 - Problem Description] 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,glo ...

  8. hdu 1728:逃离迷宫(DFS,剪枝)

    逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  9. hdu 1728

    //hdu 1728 //这个是一道很经典的迷宫题了,思路感觉...取起点和终点,判断连线是否超过n个弯, //先是从起点出发,上下左右四个方向搜索,找到一条路,把那条路的第一个点压入队列 //然后沿 ...

随机推荐

  1. .Net进阶系列(12)-异步多线程(Thread和ThreadPool)(被替换)

    一. Thread多线程   1. 两种使用方式 通过F12查看Thread后,发现有两类构造函数,ParameterizedThreadStart和ThreadStart,其中 ThreadStar ...

  2. form表单提交onclick和onsubmit

    onsubmit只能表单上使用,提交表单前会触发, onclick是按钮等控件使用, 用来触发点击事件. 在提交表单前,一般都会进行数据验证,可以选择在submit按钮上的onclick中验证,也可以 ...

  3. JavaScript之this,call,apply

    this:被调用的上下文对象: apply与call:切换被调用的上下文对象,即 调用时,this被临时性地切换 //demo 1 [call] function forEach(list,callb ...

  4. ubuntu16.10安装docker17.03.0-ce并配置国内源和加速器

    说明:这个针对docker-ce安装,ce和ee的区别是前者是社区版,后者是企业版 1.  配置Ubuntu的源,不然慢的去哭吧.参考http://cn.archive.ubuntu.com/help ...

  5. ROS Kinetic Install on Debian 9

    Not Succesed! 1.  配置源$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release - ...

  6. 【漏洞挖掘】攻击对外开放的Docker API接口

    https://medium.com/@riccardo.ancarani94/attacking-docker-exposed-api-3e01ffc3c124 1)场景 攻击开放在互联网的Dock ...

  7. 【Mysql sql inject】【入门篇】sqli-labs使用 part 3【15-17】

      Less-15- Blind- Boolian Based- String 1)工具用法: sqlmap -u --batch --technique BEST 2)手工注入 时间盲注放弃用手工了 ...

  8. python实战===教你用微信每天给女朋友说晚安

    但凡一件事,稍微有些重复.我就考虑怎么样用程序来实现它. 这里给各位程序员朋友分享如何每天给朋友定时微信发送”晚安“,故事,新闻,等等··· ···最好运行在服务器上,这样后台挂起来更方便. 准备: ...

  9. java web path

    1,request.getRealPath("/");这个方法已不推荐用 2,在Servlet 里用this.getServletContext().getRealPath(&qu ...

  10. 常见的移动端Web页面问题

    移动端Web需要照顾触摸操作的体验,以及更多的屏幕旋转与尺寸适配等问题,非常琐碎,在这里为大家倾力总结多条常见的移动端Web页面问题解决方案,欢迎收看收藏! 1.安卓浏览器看背景图片,有些设备会模糊 ...