hdu_1728_逃离迷宫(bfs)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1728
题意:走迷宫,找最小的拐角
题解:对BFS有了新的理解,DFS+剪枝应该也能过,用BFS就要以拐角作为增量来搜,即以当前点为坐标,4个方向都搜一次,下一次出队,step就要加1
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
#define FFC(i,a,b) for(int i=a;i<=b;i++)
int t,m,n,xs,xe,ys,ye,k,dir[][]={{,},{-,},{,},{,-}};
struct dt{int x,y,t;};
char g[][];bool v[][];
bool check(int x,int y){
if(x>n||x<||y>m||y<||g[x][y]=='*')return ;
return ;
}
bool fuck(){
memset(v,,sizeof(v));
dt st,o;st.x=xs,st.y=ys,st.t=-;
v[xs][ys]=;
queue<dt>Q;Q.push(st);
while(!Q.empty()){
o=Q.front();Q.pop();
if(o.x==xe&&o.y==ye&&o.t<=k)return ;
o.t++;
for(int i=;i<;i++){
int xx=o.x+dir[i][],yy=o.y+dir[i][];
while(check(xx,yy)){
if(!v[xx][yy]){st.x=xx,st.y=yy,st.t=o.t,v[xx][yy]=;Q.push(st);}
xx+=dir[i][],yy+=dir[i][];
}
}
}
return ;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
FFC(i,,n){
getchar();
FFC(j,,m)scanf("%c",&g[i][j]);
}
scanf("%d%d%d%d%d",&k,&ys,&xs,&ye,&xe);
if(fuck())puts("yes");
else puts("no"); }
return ;
}
hdu_1728_逃离迷宫(bfs)的更多相关文章
- hdu 1728 逃离迷宫 (BFS)
逃离迷宫 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- 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 ...
- 杭电 逃离迷宫 BFS
给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位 ...
- HDU 1728 逃离迷宫 BFS题
题目描述:输入一个m*n的地图,地图上有两种点,一种是 . 表示这个点是空地,是可以走的,另一种是 * ,表示是墙,是不能走的,然后输入一个起点和一个终点,另外有一个k输入,现在要你确定能否在转k次弯 ...
- hdu 1728 逃离迷宫 BFS加优先队列 DFS()
http://acm.hdu.edu.cn/showproblem.php?pid=1728 题意就是能否在规定的转弯次数内从起点走到终点.刚走时那步方向不算. 只会bfs(),但想到这题需要记录转弯 ...
- hdu1728 逃离迷宫bfs
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1728/ 关于广度优先搜索的第一篇题解.广度优先搜索,就是状态树的层次遍历,一层一层的搜索,直到搜索到目标状态为止 ...
- HDU 1728:逃离迷宫(BFS)
http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有 ...
- 逃离迷宫(HDU 1728 BFS)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
随机推荐
- CentOS 下安装apt-get
CentOS 下安装apt-get 最近在学习Linux系统时,网上好多帖子都是用apt-get里下载rpm包,于是就在Google上找了个CentOS下安装apt-get的方法 1.下载地址:htt ...
- Webbench源代码分析(转载)
转载地址 http://blog.csdn.net/kangroger/article/details/42500703 Web Bench是一个网站压力测试的工具.其最后更新时间是2004年,已经十 ...
- ARM应用调试思路、方法总结、笔记
一.应用调试1:使用strace命令来跟踪系统调用 二.应用调试2:使用GDB来调试应用程序 编译gdb,gdbservertar xjf gdb-7.4.tar.bz2cd gdb-7.4/./co ...
- webapp在Android中点击链接的时候会有淡蓝色的遮罩层
body{-webkit-tap-highlight-color: rgba(0,0,0,0);}
- linux下安装nginx+php
参考:http://blog.csdn.net/ihelloworld/article/details/7029796 http://blog.chinaunix.net/uid-21374062-i ...
- ios @property
参考资料 http://blog.csdn.net/pingchangtan367/article/details/14000315 http://blog.csdn.net/xdrt81y/arti ...
- RTL-SDR简单介绍
Sdr 软件定义的无线电(Software Defined Radio,SDR) 是一种无线电广播通信技术,它基于软件定义的无线通信协议而非通过硬连线实现. Rtl-sdr 原身是Realtek RT ...
- js--3目运算符
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- [妙味 DOM] 第二课:DOM、BOM相关方法及属性
知识点总结 获取样式.增加样式.删除样式函数的封装 表格 tHead tBodies tFoot rows 行 cells 列 表单 表单可以通过name来获取元素:表单.name值 onchange ...
- c# socket传输struct类型
data结构体类型 public struct datas { public string test1; public string test2; } //socket服务器端 publi ...