题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1728

注意:1、先输入起点(y1,x1)和终点(y2,x2);

2、如果一个一个遍历会超时。

思路:每次将整一行或列的点全部遍历,然后再寻找是否找过某个点。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int n,m,x1,y1,x2,y2,k;
char a[][];
struct Node{
int x,y,step;
};
int vis[][],zz[][]={{,},{,-},{,},{-,}};
bool pd(int x,int y)
{
if(x<||x>=n||y<||y>=m||a[x][y]=='*') return false;
return true;
}
void bfs()
{
if(x1==x2&&y1==y2)
{
cout<<"yes"<<endl;
return ;
}
queue <Node> q;
memset(vis,,sizeof(vis));
Node tmp,tp;
tmp.x=x1-;tmp.y=y1-;tmp.step=-;
vis[x1-][y1-]=;
q.push(tmp);
while(!q.empty())
{
tmp=q.front();
q.pop();
for(int i=;i<;i++)
{
tp.x=tmp.x+zz[i][];
tp.y=tmp.y+zz[i][];
while(pd(tp.x,tp.y))
{
if(vis[tp.x][tp.y]==)
{
tp.step=tmp.step+;
vis[tp.x][tp.y]=;
if(tp.x==x2-&&tp.y==y2-&&tp.step<=k)
{
cout<<"yes"<<endl;
return ;
}
q.push(tp);
}
tp.x+=zz[i][];
tp.y+=zz[i][];
}
}
}
cout<<"no"<<endl;
return ;
} int main(void)
{
int i,j,T;
cin>>T;
while(T--)
{
cin>>n>>m;
for(i=;i<n;i++) scanf("%s",a[i]);
cin>>k>>y1>>x1>>y2>>x2;
bfs();
}
return ;
}

参考文章:https://blog.csdn.net/flynn_curry/article/details/52901207

hdu-1728(bfs+优化)的更多相关文章

  1. hdu 1728 bfs **

    简单bfs,记录好状态即可 #include<cstdio> #include<iostream> #include<algorithm> #include< ...

  2. 逃离迷宫(HDU 1728 BFS)

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

  3. HDU 1728 逃离迷宫

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

  4. hdu 1728

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

  5. hdu 4531 bfs(略难)

    题目链接:点我 第一次不太清楚怎么判重,现在懂了,等下次再做 /* *HDU 4531 *BFS *注意判重 */ #include <stdio.h> #include <stri ...

  6. 2013年第四届蓝桥杯国赛 九宫重排(HashMap+双BFS优化)

    九宫重排     时间限制:1.0s   内存限制:256.0MB 问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干 ...

  7. HDU 1728:逃离迷宫(BFS)

    http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Problem Description   给定一个m × n (m行, n列)的迷宫,迷宫中有 ...

  8. hdu - 1728逃离迷宫 && hdu - 1175 连连看 (普通bfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1728 这两道题花了一下午的时候调试,因为以前做过类似的题,但是判断方向的方法是错的,一直没发现啊,真无语. 每个 ...

  9. hdu 1728 逃离迷宫 bfs记转向

    题链:http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Mem ...

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

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

随机推荐

  1. ADO 读写文本文件

    ' 创建配置文件            Open ThisWorkbook.Path & "\schema.ini" For Append As #1            ...

  2. springmvc @valid

    JSR303是javaEE6中的一个子规范:Bean Validation.官方实现是HibernateValidatior.校验: 使用springmvc 的validate机制,需要引入valid ...

  3. nmap扫描工具

    1.NMap工具 主要功能:探测主机是否在线.扫描主机开放端口和嗅探网络服务,用于网络探测和安全扫描. NMap支持很多扫描技术,例如:UDP.TCPconnect().TCPSYN(半开扫描).ft ...

  4. How to read very large text files fast

    Question Does anyone know the fastest way to read large text files (10Mb) into a string.Readln is ju ...

  5. 显示AVI的第一桢

    procedure TForm1.Button1Click(Sender: TObject);begin  Application.ProcessMessages;  MediaPlayer1.Ope ...

  6. node集成mysql——pool连接池

    安装 mysql npm install mysql or cnpm install mysql 创建db.js,实现mysql操作模块 var mysql = require('mysql'); v ...

  7. CentOS 7安装配置Redis数据库

    Redis源码获取 1.进入Redis官网获取Redis最新稳定版下载地址 2.通过wget命令下载 Redis 源代码.   Redis编译 1.通过tar -xvf redis-3.0.2.tar ...

  8. mybatis动态sql trim

    trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码: 1. select * from user <trim prefix="WHERE" p ...

  9. angluarjs ng-repeat 行号

    参考 https://zhidao.baidu.com/question/1882914672116911828.html $index

  10. Python sum() 函数

    Python sum() 函数  Python 内置函数 描述 sum() 方法对系列进行求和计算. 语法 以下是 sum() 方法的语法: sum(iterable[, start]) 参数 ite ...