迷宫

原题:传送门

题目描述 Description

在N*N的迷宫内,“#”为墙,“.”为路,“s”为起点,“e”为终点,一共4个方向可以走。从左上角((0,0)“s”)位置处走到右下角((n-1,n-1)“e”)位置处,可以走通则输出YES,不可以走则输出NO。

输入描述 Input Description

输入的第一行为一个整数m,表示迷宫的数量。 
其后每个迷宫数据的第一行为一个整数n(n≤16),表示迷宫的边长,接下来的n行每行n个字符,字符之间没有空格分隔。

输出描述 Output Description

输出有m行,每行对应的迷宫能走,则输出YES,否则输出NO。

样例输入 Sample Input
1 7 s...##. .#..... ....... ..#.... ..#...# ###...# ......e

样例输出 Sample Output
YES

解题思路:1.首先,题目要求很明确从左上角s能不能走到右下角e,其实起点和终点在哪里都无所谓,我们只需要找到一条路到达终点即可                 2.虽然很容易想到是深搜,但是不需要回溯(没说求出最短距离,可以自己练练),所以深搜时向4个方向都递归一次即可                 3.还需要设置一个标记数组mark,避免陷入死循环中(一直在转圈)

核心代码:
 1 #include<iostream>
 2 using namespace std;
 3 char mi[1000][1000];
 4 int ma[1000][1000], mark = 0, ax, ay;
 5 int m, n;
 6 int z, j, haha;
 7
 8 void dfs(int x, int y)
 9 {
10     if (mi[x][y] == 'e')
11     {
12         cout << "YES" << endl;
13         mark = 1;
14         return;
15     }
16     if (x<1 || y<1 || x>n || y>n || mi[x][y] == '#' || ma[x][y] == 1)
17         return;
18     ma[x][y] = 1;//不需要回溯,因为只需要找一种情况
19     dfs(x + 1, y);
20     dfs(x - 1, y);
21     dfs(x, y + 1);
22     dfs(x, y - 1);
23 }
24 int main()
25 {
26     cin >> m;
27     for (int i = 1; i <= m; i++)
28     {
29         cin >> n;
30         for (j = 1; j <= n; j++)
31             for (z = 1; z <= n; z++)
32             {
33                 cin >> mi[j][z];
34             }
35         dfs(1, 1);
36         if (mark == 0)
37             cout << "NO" << endl;
38     }
39     return 0;
40 }

转载于:https://www.cnblogs.com/Diligent-Memory/p/10535102.html

CODEVS-1215迷宫相关推荐

  1. poj迷宫游戏c语言代码,ACM/ICPC 之 BFS-简单障碍迷宫问题(POJ2935)

    题目确实简单,思路很容易出来,难点在于障碍的记录,是BFS迷宫问题中很经典的题目了. POJ2935-Basic Wall Maze 题意:6*6棋盘,有三堵墙,求从给定初始点到给定终点的最短路,输出 ...

  2. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  3. 经典问题的另类解法——以信息学奥赛一本通c++版1216红与黑为例

    题目链接:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn) 题目描述: 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动 ...

  4. 信息学奥赛一本通超详细题解,动画图文题解

    内容来源于微信公众号:大神编程.已经过原文作者授权. 更新时间:2020-11-5 现在开始更新基础算法题. 个人感言:从未见过如此详细的题解,动画.图文结合,适合任何水平的选手.尤其是特别适合自学的 ...

  5. 信息学奥赛一本通(1215:迷宫)

    1215:迷宫 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 29437     通过数: 8772 [题目描述] 一天Extense在森林里探险的时候不小心走入 ...

  6. 信息奥赛一本通1215:迷宫

    [题目描述] 一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行.同时当Extense处在某 ...

  7. 搜索与回溯 1215:迷宫

    [题目描述] 一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行.同时当Extense处在某 ...

  8. codevs——T1337 银行里的迷宫

     时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题解 题目描述 Description 楚楚每一次都在你的帮助下过了一关又一关(比如他开宴会).这一次,你的 ...

  9. 【信息学奥赛一本通】1215:迷宫(bfs版)

    [题目描述] 一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n×n的格点组成,每个格点只有2种状态,'.'和'#',前者表示可以通行后者表示不能通行.同时当Extense处 ...

  10. 习题:codevs 2822 爱在心中 解题报告

    这次的解题报告是有关tarjan算法的一道思维量比较大的题目(真的是原创文章,希望管理员不要再把文章移出首页). 这道题蒟蒻以前做过,但是今天由于要复习tarjan算法,于是就看到codevs分类强联 ...

最新文章

  1. [VC6] 图像文件格式数据查看器
  2. Performance — 前端性能监控利器
  3. Go语言竟成恶意软件的最爱!4年来Go编写的恶意软件飙增2000%,网友:这也能怪Go?...
  4. Linux - Red Hat 7.3 介绍安装
  5. 小白袍 -- Chapter 1 Java中的Encode与Decode
  6. 置顶带滚动效果_前端面试:如何实现轮播图效果?
  7. 深入理解alias, alias_method和alias_method_chain
  8. 语言条件语序心得_教师心得:提高34岁幼儿口语表达能力的策略
  9. 冒泡排序法 - python版详解
  10. java学习之路之播放一首简单的音乐
  11. 服务器监控工具_8款服务器和应用性能监控工具
  12. 机器学习实战(二)决策树DT(Decision Tree、ID3算法)
  13. python爬取邮件内容_python 定时爬取内容并发送报告到指定邮箱
  14. 解析Disruptor:写入ring buffer
  15. 有没有这样一种程序员写代码的利器
  16. 应急指挥调度管理系统|城市综合应急指挥调度系统
  17. python3 gzip解压_使用 Python 解压缩 gzip 数据流
  18. Ques1,debug模式打不开的原因
  19. Codeforces_714_A
  20. 计算机打印机共享失败,打印机共享失败终极解决办法

热门文章

  1. 在IE7 中遇到的几个小问题,有解决方案
  2. shell脚本 获取第几行 第几列 的命令 awk sed
  3. python笔记01_高级特性和函数式编程
  4. 报表性能优化方案之单数据集分页SQL实现层式报表
  5. AS3.0常用第三方类库:TweenMax
  6. python3.8.2安装ipython_CentOS系统 python3+python2 Ipython安装
  7. ddr老化测试_手把手教你评估和测试固态存储【深度】
  8. python 人脸识别调整人脸大的距离_Python 人脸识别就多简单,看这个就够了!
  9. (第三章)查看数据库
  10. vue的main.js讲解一