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

解题方法:BFS+访问数组vis[][];

给你起点位置和终点位置,让你判断能不能到达,并且拐弯数不能超过某个值。

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<queue>
using namespace std; //int dx[]={0,0,-1,1};
//int dy[]={1,-1,0,0};
int dir[][] = { , , -, , , , , - };
char map[][];
int vis[][];
int m,n;
int k; struct point
{
int x;
int y;
int kk;
}; void bfs(point s,point u)
{
int flag=;
point q,p;
s.kk=-; //(新增)-1,不是0 vis[s.x][s.y]=; //(新增)访问的标志 queue<point>tp;
tp.push(s); while(!tp.empty ())
{
q=tp.front();
tp.pop(); if(q.x==u.x&&q.y==u.y&&q.kk<=k) //(新增)q.kk<=k
{
flag=;
break;
} int i;
p.kk=q.kk+; //(新增)
for(i=;i<;i++)
{
p.x=q.x+dir[i][];//p.x=q.x+dx[i];
p.y=q.y+dir[i][];//p.y=q.y+dy[i]; while(p.x>=&&p.x<m&&p.y>=&&p.y<n&&map[p.x][p.y]!='*') //(新增)搜索完一个方向
{
if(!vis[p.x][p.y])
{
vis[p.x][p.y]=;
tp.push(p);
}
p.x+=dir[i][];//p.x+=dx[i]; //(新增)
p.y+=dir[i][];//p.y+=dy[i]; //(新增)
} } }
if(flag)
{
cout<<"yes\n";
}
else
{
cout<<"no\n";
}
} int main()
{
int t;
cin>>t;
while(t--)
{
cin>>m>>n;
for(int i=;i<m;i++)
{
for(int j=;j<n;j++)
{
cin>>map[i][j];
}
} point s,u;
cin>>k>>s.y>>s.x>>u.y>>u.x; s.y--;s.x--;u.y--;u.x--; memset(vis,,sizeof(vis)); //(新增)初始化访问标志的数组
bfs(s,u);
}
}

相关链接:http://blog.csdn.net/zhuhuangjian/article/details/8262561

走迷宫(二):在XX限制条件下,是否走得出的更多相关文章

  1. 走迷宫(三):在XX限制条件下,是否走得出。

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 题目前提条件:让你输入一个数组,包含一个起点S,一个终点D,一个时间T.(其中X代表墙,.代表此 ...

  2. P1102 走迷宫二

    题目描述 大魔王抓住了爱丽丝,将她丢进了一口枯井中,并堵住了井口. 爱丽丝在井底发现了一张地图,他发现他现在身处一个迷宫当中,从地图中可以发现,迷宫是一个N*M的矩形,爱丽丝身处迷宫的左上角,唯一的出 ...

  3. 走迷宫(用队列bfs并输出走的路径)

    #include <iostream> #include <stack> #include <string.h> #include <stdio.h> ...

  4. # Volley源码解析(二) 没有缓存的情况下直接走网络请求源码分析#

    Volley源码解析(二) 没有缓存的情况下直接走网络请求源码分析 Volley源码一共40多个类和接口.除去一些工具类的实现,核心代码只有20多个类.所以相对来说分析起来没有那么吃力.但是要想分析透 ...

  5. 一本通之 一堆迷宫 (Dungeon Master&走出迷宫&走迷宫)

    一本通在线崩溃....... . 有图有真相 这是个三维迷宫,其实和二位迷宫差不多,只是方向多加了2个. 但这个题的输入十分恶心,一度被坑的用cin.ignore(),但还是不过... 它的正确输入方 ...

  6. C语言动态走迷宫

    曾经用C语言做过的动态走迷宫程序,先分享代码如下: 代码如下: //头文件 #include<stdio.h> #include<windows.h>//Sleep(500)函 ...

  7. golang广度优先算法-走迷宫

    广度优先遍历,走迷宫思路: 1.创建二维数组,0表示是路,1表示是墙:创建队列Q,存储可遍历的点,Q的第一个元素为起始点 2.从队列中取一个点,开始,按上.左.下.右的顺序遍历周围的点next,nex ...

  8. 洛谷——P1238 走迷宫

    P1238 走迷宫 题目描述 有一个m*n格的迷宫(表示有m行.n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,文件读入这m*n个数据和起始点.结束点(起始点和结束点都是用两个数 ...

  9. 用Q-learning算法实现自动走迷宫机器人

    项目描述: 在该项目中,你将使用强化学习算法,实现一个自动走迷宫机器人. 如上图所示,智能机器人显示在右上角.在我们的迷宫中,有陷阱(红色炸弹)及终点(蓝色的目标点)两种情景.机器人要尽量避开陷阱.尽 ...

随机推荐

  1. mysql之浅谈主外键

    主键(PRIMARY KEY) 主键在一个数据表中只能有唯一的一个,约束当前字段的值不能重复,且非空保证数据的完整性,也可以当做当前数据表的标识符用来查询(当做索引,唯一性索引的一种) 创建带主键的表 ...

  2. 用三维的视角理解二维世界:完美解释meshgrid函数,三维曲面,等高线,看完你就懂了。...

    完美解释meshgrid函数,三维曲面,等高线 #用三维的视角理解二维世界 #完美解释meshgrid函数,三维曲面,等高线 import numpy as np import matplotlib. ...

  3. nginx 反向代理转发导致css,js,图片失效

    为什么80%的码农都做不了架构师?>>>   需要添加以下配置 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { proxy_pass htt ...

  4. 数学--数论--中国剩余定理 拓展 HDU 1788

    再次进行中国余数定理 问题描述 我知道部分同学最近在看中国剩余定理,就这个定理本身,还是比较简单的: 假设m1,m2,-,mk两两互素,则下面同余方程组: x≡a1(mod m1) x≡ a2(mod ...

  5. 树上倍增法求LCA

    我们找的是任意两个结点的最近公共祖先, 那么我们可以考虑这么两种种情况: 1.两结点的深度相同. 2.两结点深度不同. 第一步都要转化为情况1,这种可处理的情况. 先不考虑其他, 我们思考这么一个问题 ...

  6. jQuery如何使用键盘事件,按住空格键完成进度条效果,并终止键盘事件

    jQuery使用键盘事件 keyup:键盘抬起时 keydown:键盘按下时 keypress:键盘按住时 运行下列代码,可以看效果 $(document).keyup(function () { c ...

  7. C语言程序设计实验报告三

    C程序设计实验报告 姓 名:张美盛 实验地点:家 实验时间:2020年3月29日 实验项目:4.3.1 If语句的应用 4.3.2 switch-case的应用 4.3.3 switch-case嵌套 ...

  8. 用Navicat建MySQL数据库表,动态改变创建时间和更新时间戳

    1.create_time 记录创建的时间,设默认值为:CURRENT_TIMESATMP 注意:不勾选那个[根据当前时间戳更新] 2.operator_time 更新记录的时间,勾选那个[根据当前时 ...

  9. leetCode刷题 | 两数相加

    给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和 ...

  10. 【x64软路由】OpenWrt(LEDE) 20200329编译 反追踪 抗污染 加速 PSW 无缝集成 UPnP NAS

    固件说明 基于Lede OpenWrt R2020.3.19版本(源码更新截止20200329)Lienol Feed及若干自行维护的软件包 结合家庭x86软路由场景需要定制 按照家庭应用场景对固件及 ...