经典迷宫问题(C++)

*给出一个起点S
输入地图
‘.’ 代表可以走
’代表墙壁不能走
‘T’代表终点

question判断是否能够能从到达终点 (不要求最短路径)
thinking and methods :单独考虑一个点,从上下左右四个方向进行探索,如果满足条件(不是墙壁&&未超界&&未被探索过),向这个方向探索(递归),直到满足条件或者无路可走return 进行回溯 好好理解dfs(x,y)回溯之后的下一步:vis[tx][ty]=0 “还原现场”;

(4,3)为单点讲解

上代码

#include <stdio.h>
#include <iostream>
using namespace std;
char Map[50][50];
int n,m,p,q,vis[50][50],flag=0;
const int N=1000;
int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};//上下左右走位
void dfs(int x,int y)//经典DFS模板↓↓↓
{if(Map[x][y]=='S')//走到终点{flag=1;return;}for(int i=0;i<4;i++){int tx=x+dir[i][0];int ty=y+dir[i][1];if(tx>=0&&tx<=m&&ty>=0&&ty<=n&&vis[tx][ty]==0&&Map[tx][ty]!='*')//下一步未出界且下一步位置未被访问过(DFS算法的vis[][])  {vis[tx][ty]=1;dfs(tx,ty);vis[tx][ty]=0;//回溯}
}
}
int main()
{while(cin>>n,n){cin>>m>>n;memset(vis,0,sizeof(vis));for(int i=0;i<m;i++)for(int j=0;j<n;j++){cin>>Map[i][j];if(Map[i][j]=='T')  p=i,q=j;}dfs(p,q);if(flag==1) cout<<"yes"<<endl;else cout<<"No"<<endl;}
}

经典迷宫问题(C++)简单DFS算法相关推荐

  1. 迷宫生成与路径规划算法-Python3.8-附Github代码

    MazeProblem 简单介绍一下 该项目不过是一个平平无奇的小作业,基于python3.8开发,目前提供两种迷宫生成算法与三种迷宫求解算法,希望对大家的学习有所帮助. 项目如果有后续的跟进将会声明 ...

  2. 深度优先搜索dfs算法刷题笔记【蓝桥杯】

    其实网上已经有不少dfs的算法笔记,但我之所以还再写一篇,主要是因为我目前见到的笔记,都有些太偏向理论了. 对于基础薄弱的或是没有基础的人(like me),有点不合适,因为看了,也不能说自己会了. ...

  3. 【2018.07.29】(深度优先搜索/回溯)学习DFS算法小记

    参考网站:https://blog.csdn.net/ldx19980108/article/details/76324307 这个网站里有动态图给我们体现BFS和DFS的区别:https://www ...

  4. c语言中dfs算法不定起点问题,dfs算法(dfs算法例子)

    有哪位大侠知道请告知 首先选定图的类别(有向图.无向图),再选定图的存储结构,根据输入的顶点或者. 根据已有的邻接矩阵或邻接表用递归方法编写深度优先搜索遍历算法,并输出遍历结. 要求思路!谢谢! 深度 ...

  5. UA SIE545 优化理论基础5 搜索与整数规划1 DFS算法

    UA SIE545 优化理论基础5 搜索与整数规划1 DFS算法 DFS方法基础 邮票问题 这部分的主要目标是建立求解整数规划的方法,早期解决整数规划需要穷举,后来人们把搜索技术应用到整数规划中,极大 ...

  6. 微软面试中简单的算法题目(转)

    微软面试中简单的算法题目(转) (说明:这些题就不是什么花样了,考的是你的基础知识怎么样.再聪明而没有实学的人都将会被这些题所淘汰.)  1.链表和数组的区别在哪里? ANSWER 主要在基本概念上的 ...

  7. python线性回归算法简介_Python实现的简单线性回归算法实例分析

    本文实例讲述了Python实现的简单线性回归算法.分享给大家供大家参考,具体如下: 用python实现R的线性模型(lm)中一元线性回归的简单方法,使用R的women示例数据,R的运行结果: > ...

  8. 小白学数据:教你用Python实现简单监督学习算法

    转载自 小白学数据:教你用Python实现简单监督学习算法 今天,文摘菌想谈谈监督学习. 监督学习作为运用最广泛的机器学习方法,一直以来都是从数据挖掘信息的重要手段.即便是在无监督学习兴起的近日,监督 ...

  9. DFS算法原理及其具体流程,包你看一遍就能理解

    目录 写在前面 DFS算法 所解决的问题 所需要的数据结构 代码结构及解释 方法一:递归 解释 递归dfs总结 方法二:栈 解释 栈dfs总结 写在前面 因为楼主也是刚开始刷leetcode,所以下面 ...

最新文章

  1. 单系统站内信数据库设计思路
  2. 后端必备:15000 字的 SQL 语句大全
  3. 【Android视图效果】共享元素实现仿微信查看大图效果
  4. STL之set集合容器
  5. Java基础教程:多线程基础(3)——阻塞队列
  6. 基于Tablestore的Wifi设备监管系统架构实现
  7. QuantLib 金融计算——随机过程之概述
  8. TensorFlow中的设备管理——Device的创建与注册机制
  9. bzoj1293: [SCOI2009]生日礼物
  10. 读懂金融危机必看的十四本书
  11. 数据库查询性能优化之利器—索引(一)
  12. log函数 oracle power_Oracle 函数大全详细介绍
  13. linux控制主机风扇转速,怎么调整cpu风扇转速 cpu风扇转速调整方法【详解】
  14. Win10一键修复所有dll缺失的方法
  15. libxml2交叉编译
  16. 超详细excel键盘快捷键大全
  17. 树莓派4b自带wifi_树莓派raspberry4B入坑指南 part-11 在命令行中设置wifi
  18. 网络营销的4p营销理论
  19. 如果360与QQ冲突下去不兼容,你会放弃哪一个?
  20. 浅谈CAS,一篇就够了

热门文章

  1. EasyRecovery16免费版电脑数据恢复工具
  2. 谁偷偷删了你的微信?别慌!Python 揪出来
  3. Blender3 按下I键插入帧失败,报错 插入关键帧的帧位置 解决
  4. python黑的调白的_Python实现PS图像调整黑白效果示例
  5. Sql排序(当有Null值存在时,将它排在最后面)
  6. 如何从0到1打造自动化测试平台
  7. git clone 报错fatal: unable to access ‘https://github.com/xxxx‘: OpenSSL SSL_read
  8. TCP-Wrappers
  9. Python/PHP:免费IP归属地查询接口和通过ip获取大致位置信息
  10. javax.net.ssl.SSLPeerUnverifiedException: Hostname 10.1.82.151 not verified: