//hdu 1728

//这个是一道很经典的迷宫题了,思路感觉。。。取起点和终点,判断连线是否超过n个弯,

//先是从起点出发,上下左右四个方向搜索,找到一条路,把那条路的第一个点压入队列

//然后沿着那个方向一直搜下去,直到不符合条件(4个方向都动不了),就从队列里面去首元素

//然后不断循环这个操作。。。。

#include <iostream>
#include <cstring>
#include <queue>
#include <stdio.h>
#include <algorithm>
using namespace std; char Map[110][110];
int vis[110][110];
int dx[]={0,0,-1,1};//两个数组是搜索的时候用
int dy[]={-1,1,0,0}; int k,x1,x2,y1,y2,i,side1,side2;
struct dot
{
int x,y,k;//k存放转弯数
}; void BFS(dot a,dot b)
{
int flag=0; vis[a.x][a.y]=1;//flag标记是否到达目标
dot m,n; m.x=a.x; m.y=a.y; m.k=-1;//m,n为中间变量
queue<dot>q; q.push(m);//将起点a(m)入队列
while(!q.empty())//别问为什么要用队列非空来做。。。书上写的,记住就ok,因为你还不是大牛
{
m=q.front();
q.pop(); if(m.x==b.x&&m.y==b.y&&m.k<=k) {flag=1; break;} n.k=m.k+1;//因为每次从队列取出首元素,这个时候已经增加了一个弯 for(i=0;i<4;i++)//开始搜索
{
int j=m.x+dx[i];
int l=m.y+dy[i];
while(j>=0&&j<side1&&l>=0&&l<side2&&Map[j][l]!='*')//判断条件
{
if(!vis[j][l])
{
vis[j][l]=1;
n.x=j;
n.y=l;
q.push(n);//如果没被标记,那么标记它,用n记下此时坐标值,压入队列中
}
j+=dx[i];//朝某个方向一直搜索
l+=dy[i];
}
}
}
if(flag==1) cout<<"yes\n";
else
cout<<"no\n";
} int main()
{
int t;
cin>>t;
while(t--)
{
memset(vis,0,sizeof(vis));
//memset(Map,0,sizeof(Map));
dot _m,_n;
cin>>side1>>side2;
for(i=0;i<side1;i++)
cin>>Map[i];
cin>>k>>y1>>x1>>y2>>x2;//要注意这个地方好坑人。。。。。
_m.x=x1-1; _m.y=y1-1;
_n.x=x2-1; _n.y=y2-1;
BFS(_m,_n);
}
return 0;
}

hdu 1728的更多相关文章

  1. HDU 1728 逃离迷宫

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

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

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

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

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

  4. hdu 1728 逃离迷宫(dFS+优先队列)

    求转弯最少的走路方式!!!! #include<stdio.h> #include<string.h> #include<queue> using namespac ...

  5. HDU 1728 逃离迷宫(DFS)

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

  6. HDU 1728 逃离迷宫(DFS经典题,比赛手残写废题)

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

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

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

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

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

  9. hdu 1728 逃离迷宫 bfs记步数

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

随机推荐

  1. Python标准库--os模块

    这个模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行.一个例 ...

  2. C#.net 货币格式转换

    /// <summary> /// 输入Float格式数字,将其转换为货币表达方式 /// </summary> /// <param name="ftype& ...

  3. Yii2的相关学习记录,alert等美化、confirm异步、session中的flash及小部件的使用(六)

    呃,系统自带的alert.confirm等弹出框实在是难看,作为一个颜控,这能忍? 这里我用的是kartik-v/yii2-dialog,这个是基于bootstrap3-dialog这个来做了一些常用 ...

  4. Python学习笔记:05类

    类 Python是面向对象的语言,面向对象最重要的三个优点有: 多态:多态使对象具备不同的行为方式.(可以认为声明了接口,但是实现方式可能多样) 封装:封装是对全局作用域中隐藏多余信息的原则(创建对象 ...

  5. poj Organize Your Train part II

    http://poj.org/problem?id=3007 #include<cstdio> #include<algorithm> #include<cstring& ...

  6. 新发现:AirDroid(用Web端控制自己的手机发信息)

    http://web.airdroid.com/ 好多功能呀,有空研究研究 http://jingyan.baidu.com/article/b24f6c82cd4ade86bfe5daf3.html ...

  7. Extjs4 中在指定光标处插入值

    var rulearea = Ext.getCmp(文本域Id); var rulevalue = rulearea.getValue();// 获取文本textarea 里面的值 var start ...

  8. 7.1 Backup and Recovery Types 备份和恢复类型

    7.1 Backup and Recovery Types 备份和恢复类型 这个章节描述 不同备份类型的特点: 物理(raw)与逻辑备份 物理备份有raw 副本组成,存储数据库内容,这种类型的备份是适 ...

  9. BZOJ 1032 [JSOI2007]祖码Zuma

    1032: [JSOI2007]祖码Zuma Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 637  Solved: 318[Submit][Stat ...

  10. [Poetize I]守卫者的挑战

    描述 Description 打开了黑魔法师Vani的大门,队员们在迷宫 般的路上漫无目的地搜寻着关押applepi的监狱的所在地.突然,眼前一道亮光闪过.“我,Nizem,是黑魔法圣殿的守卫者.如果 ...