hdu 1728 迷宫 给定最大转弯次数 (BFS)
给出起点 终点 以及转弯次数 在<=转弯次数的条件 能否走到终点
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)的更多相关文章
- hdu1728 逃离迷宫---转弯次数不超过k+BFS
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1728 题目大意: 给你一幅图,给出起点终点和最大转弯次数,判断是否能从起点到终点.'*'表示障碍物. ...
- HDU - 1728 逃离迷宫 【BFS】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1728 思路 BFS 一开始 从开始位置 往四周走 如果能走的话 这个时候 转弯次数都是0 我们的标记不 ...
- hdu 1728 逃离迷宫 BFS加优先队列 DFS()
http://acm.hdu.edu.cn/showproblem.php?pid=1728 题意就是能否在规定的转弯次数内从起点走到终点.刚走时那步方向不算. 只会bfs(),但想到这题需要记录转弯 ...
- HDU 1728 逃离迷宫(DFS||BFS)
逃离迷宫 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可 ...
- HDU 1728 逃离迷宫【BFS】
题意:给出一个起点,一个终点,规定的转弯次数,问能否在规定的转弯次数内到达终点--- 这一题是学(看)习(题)的(解)@_@ 主要学了两个地方 一个是剪枝,如果搜到的当前点的转弯次数小于该点turn数 ...
- HDU 1728 逃离迷宫 BFS题
题目描述:输入一个m*n的地图,地图上有两种点,一种是 . 表示这个点是空地,是可以走的,另一种是 * ,表示是墙,是不能走的,然后输入一个起点和一个终点,另外有一个k输入,现在要你确定能否在转k次弯 ...
- HDU 1728 逃离迷宫
[题目描述 - Problem Description] 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,glo ...
- hdu 1728:逃离迷宫(DFS,剪枝)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 1728
//hdu 1728 //这个是一道很经典的迷宫题了,思路感觉...取起点和终点,判断连线是否超过n个弯, //先是从起点出发,上下左右四个方向搜索,找到一条路,把那条路的第一个点压入队列 //然后沿 ...
随机推荐
- Weblogic常见故障常:JDBC Connection Pools【转】
WebLogic Server中数据库连接池是一个经常出问题的地方,总结一下出问题的原因和解决办法. 一.数据库连接泄漏 此类问题一般都是由于开发人员没有正确关闭数据库连接造成的.比如使用完Conne ...
- $使用dom4j可解析 返回&#x等字样的 html转义字符【转】
如果以GET或POST请求某个系统返回,带有 $#x 那很有可能是axis服务器返回的. <?xml version="1.0" encoding="UTF-8&q ...
- golang数组排序算法
冒泡排序 图 https://www.cnblogs.com/onepixel/articles/7674659.html package main import ( "fmt" ...
- 转--Python标准库之一句话概括
作者原文链接 想掌握Python标准库,读它的官方文档很重要.本文并非此文档的复制版,而是对每一个库的一句话概括以及它的主要函数,由此用什么库心里就会有数了. 文本处理 string: 提供了字符集: ...
- 工控安全入门之Modbus(转载)
工控安全这个领域比较封闭,公开的资料很少.我在读<Hacking Exposed Industrial Control Systems>,一本16年的书,选了的部分章节进行翻译,以其抛砖引 ...
- C++ 中 #ifndef, #define, #endif 宏定义
目的:为了保证包含的内容只被程序(include) 和编译了一次.判断预处理器常量是否已被定义. 预编译将所有头文件(#include"XXX.h")用头文件中的内容来替换,头文件 ...
- [C++]指针与引用(应用辨析)
1.指针变量允许将一个整数经强制转换后赋值给指针变量 Eg: float *fp; fp = (float *)5000;//意义:将5000作为一个地址赋给指针变量fp 2 ...
- HDU4685 Prince and Princess【强连通】
题意: 有n个王子和m个公主,每个王子都会喜欢若干个公主,也就是王子只跟自己喜欢的公主结婚,公主就比较悲惨, 跟谁结婚都行.然后输出王子可能的结婚对象,必须保证王子与任意这些对象中的一个结婚,都不会影 ...
- Flask最强攻略 - 跟DragonFire学Flask - 第十篇 before_request after_request
Flask我们已经学习很多基础知识了,现在有一个问题 我们现在有一个 Flask 程序其中有3个路由和视图函数,如下: from flask import Flask app = Flask(__na ...
- JavaScript练习 - 模态对话框
模态对话框练习 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...