hdu-1728(bfs+优化)
题目链接: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+优化)的更多相关文章
- hdu 1728 bfs **
简单bfs,记录好状态即可 #include<cstdio> #include<iostream> #include<algorithm> #include< ...
- 逃离迷宫(HDU 1728 BFS)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- HDU 1728 逃离迷宫
[题目描述 - Problem Description] 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,glo ...
- hdu 1728
//hdu 1728 //这个是一道很经典的迷宫题了,思路感觉...取起点和终点,判断连线是否超过n个弯, //先是从起点出发,上下左右四个方向搜索,找到一条路,把那条路的第一个点压入队列 //然后沿 ...
- hdu 4531 bfs(略难)
题目链接:点我 第一次不太清楚怎么判重,现在懂了,等下次再做 /* *HDU 4531 *BFS *注意判重 */ #include <stdio.h> #include <stri ...
- 2013年第四届蓝桥杯国赛 九宫重排(HashMap+双BFS优化)
九宫重排 时间限制:1.0s 内存限制:256.0MB 问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干 ...
- HDU 1728:逃离迷宫(BFS)
http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有 ...
- hdu - 1728逃离迷宫 && hdu - 1175 连连看 (普通bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1728 这两道题花了一下午的时候调试,因为以前做过类似的题,但是判断方向的方法是错的,一直没发现啊,真无语. 每个 ...
- 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 思路 BFS 一开始 从开始位置 往四周走 如果能走的话 这个时候 转弯次数都是0 我们的标记不 ...
随机推荐
- ADO 读写文本文件
' 创建配置文件 Open ThisWorkbook.Path & "\schema.ini" For Append As #1 ...
- springmvc @valid
JSR303是javaEE6中的一个子规范:Bean Validation.官方实现是HibernateValidatior.校验: 使用springmvc 的validate机制,需要引入valid ...
- nmap扫描工具
1.NMap工具 主要功能:探测主机是否在线.扫描主机开放端口和嗅探网络服务,用于网络探测和安全扫描. NMap支持很多扫描技术,例如:UDP.TCPconnect().TCPSYN(半开扫描).ft ...
- 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 ...
- 显示AVI的第一桢
procedure TForm1.Button1Click(Sender: TObject);begin Application.ProcessMessages; MediaPlayer1.Ope ...
- node集成mysql——pool连接池
安装 mysql npm install mysql or cnpm install mysql 创建db.js,实现mysql操作模块 var mysql = require('mysql'); v ...
- CentOS 7安装配置Redis数据库
Redis源码获取 1.进入Redis官网获取Redis最新稳定版下载地址 2.通过wget命令下载 Redis 源代码. Redis编译 1.通过tar -xvf redis-3.0.2.tar ...
- mybatis动态sql trim
trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码: 1. select * from user <trim prefix="WHERE" p ...
- angluarjs ng-repeat 行号
参考 https://zhidao.baidu.com/question/1882914672116911828.html $index
- Python sum() 函数
Python sum() 函数 Python 内置函数 描述 sum() 方法对系列进行求和计算. 语法 以下是 sum() 方法的语法: sum(iterable[, start]) 参数 ite ...