题目描述

一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,不限时间和步数,当然也没有陷阱,请你判断他能不能顺利的得到宝藏。

输入

多组输入
每组测试数据的第一行包含了两个整数M,N(1<N,M<20)(n=0&&m=0表示输入结束),分别代表了迷宫的行和列。接下来的M每行有N个字符,描述了迷宫的布局。其中每个字符的含义如下:
.表示可以走的路
S:表示ACM的出发点
G表示宝藏的位置
#表示这里有墙,ACM无法进入或者穿过。

输出

每行输出一个YES表示ACM能找到宝藏,输出NO表示ACM找不到宝藏。

样例输入复制

4 4
S.#.
..#.
..#G
..#.
3 4
S.#.
..#.
...G
0 0

样例输出复制

NO
YES
#include<iostream>
#include<cstring>
#include <queue>using namespace std;const int maxn = 20+5;
char arr[maxn][maxn];
bool visit[maxn][maxn];
int dx[4]={1,0,0,-1};
int dy[4]={0,-1,1,0};
int n,m,x1,y1,x2,y2;struct Point{int x;int y;
};void BFS()
{queue<Point> q{};q.push({x1,y1});while(!q.empty()){Point p = q.front();q.pop();if(p.x==x2&&p.y==y2){cout<<"YES"<<endl;return;}for(int i=0;i<4;i++){int nx = p.x+dx[i];int ny = p.y+dy[i];if(nx<0||nx>=n||ny>=m||ny<0||visit[nx][ny]||arr[nx][ny]=='#')continue;q.push({nx,ny,});visit[nx][ny]= true;}}cout << "NO" << endl;
}int main()
{while(cin>>n>>m){if(n==0&&m==0)return 0;memset(visit,false, sizeof(visit));memset(arr,'#',sizeof(arr));for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>arr[i][j];if(arr[i][j]=='S'){arr[i][j]='.';x1=i,y1=j;}if(arr[i][j]=='G'){arr[i][j]='.';x2=i,y2=j;}}}BFS();}return 0;
}

问题 I: 迷宫寻宝相关推荐

  1. NYOJ 82:迷宫寻宝(一)(BFS)

    迷宫寻宝(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编过号 ...

  2. 迷宫寻宝(自编简单版)

    nyoj - 迷宫寻宝(1) 我觉得有点难...我将其改简单一些. 题目描述:与原题基本差不多,但开门条件改一下,每个门只需要一把钥匙即可打开,一把钥匙可以开所有对应的门. 这样就简单很多啦...其实 ...

  3. nyoj82(迷宫寻宝)

    nyoj82(迷宫寻宝) 迷宫寻宝(一) 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个 ...

  4. 迷宫寻宝(一) 82

    /*迷宫寻宝(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编 ...

  5. 迷宫寻宝(宽度搜索)(C++)

    迷宫寻宝 题目 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,不限时间和步数,当然也没有陷阱,请你判断他能不能顺利的得到宝藏. 输入 多组输入 每组测试数据的第一行包含了两个整数M ...

  6. Qt利用深度优先搜索实现迷宫寻宝

    先看效果: 利用QT搭建迷宫界面 利用单选框来构造迷宫,设置障碍物和宝藏的位置 利用深度优先搜索实现迷宫寻宝,并且在寻找的过程中避开障碍物. 搜索算法在线程中进行 定义方格的属性 enum Signa ...

  7. PARL源码走读——使用策略梯度算法求解迷宫寻宝问题

    前不久,百度发布了基于PaddlePaddle的深度强化学习框架PARL.git传送门 作为一个强化学习小白,本人怀着学习的心态,安装并运行了PARL里的quick-start.不体验不知道,一体验吓 ...

  8. nyoj 81 迷宫寻宝

    迷宫寻宝(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编 ...

  9. nyoj82 迷宫寻宝(一) (bfs)

    迷宫寻宝(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编过号的门 ...

  10. 迷宫寻宝(一) 搜索

    迷宫寻宝(一) 时间限制: 1 Sec  内存限制: 64 MB 提交: 24  解决: 7 [提交][状态][讨论版] 题目描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这 ...

最新文章

  1. 41岁程序员被裁,北京有1500万房产,程序员:我该不该退休?
  2. 10行代码实现目标检测
  3. STM32 之十一 LL 库(low-layer drivers)详解 及 移植说明
  4. Java入门1.2.3—一个老鸟的Java学习心得
  5. java如何实现e的次方_Java开发如何更改MySQL数据库datadir目录之MySQL数据库索引实现...
  6. python学习--关注容易被忽略的知识点--(四)函数式编程
  7. 创建一个带有Lookup字段的List
  8. 解决cuda官网安装包下载速度慢的问题
  9. Windows 64位安装 memcached
  10. 使用PHP的http请求客户端guzzle如何添加请求头
  11. rk3128-android7-定频
  12. 如何分辨iphone 的冷屏与暖屏
  13. 【直击DTCC】自然语言技术在文智趋势分析产品的应用
  14. 视频教程-Python疫情监控完整项目实战-Python
  15. User Exit for MIGO after SAVE
  16. dcmtk医学图像处理教程(一)环境配置VS2019+dcmtk3.6.6
  17. #为何程序员百万年薪,CTO技术总监架构师不写代码还这么牛逼 ?
  18. 4月28号软件资讯更新合集.....
  19. TensorFlow教程使用RNN生成唐诗
  20. web播放视频(flv mp4 wmv avi)

热门文章

  1. 如何让云计算安全变得更“聪明”
  2. 23种设计模式之中介者模式(Mediator)
  3. 哔哩哔哩弹幕爬取以及BV与AV号之间的转换
  4. C#接口与抽象类的区别
  5. 编程一定要有坚定的信仰!
  6. 无法更新计算机的启动设置安装,“windows 无法更新计算机的启动配置。安装无法继续”这样解决...
  7. git checkout常用命令
  8. 使用Jansson处理JSON
  9. appinventor连接MySQL_APPInventor网络数据库浏览器(TinyWebDB查询API)
  10. 01改变世界:现代计算机真正的鼻祖——超越时代的伟大思想