当前位置: 首页 > news >正文

迷宫求解(云南大学)

第1关:迷宫求解(栈)

任务描述
本关任务:编写一个能自动走出迷宫的程序。

相关知识
为了完成本关任务,你需要掌握:1.栈操作,2.迷宫求解。

迷宫
我们小时候都玩过迷宫,走迷宫可以说是非常有意思了。而在我们大脑里是如何对这个游戏进行思考的呢?其实我们在玩这个游戏的是,大多是一条路走到黑,如果到达出口那么就走出来了,如果是死胡同,那么回到刚才的分叉口,再找一条路再一条路走到黑,以此类推。而我们在实现迷宫求解的时候也是利用这种方法,这种方法又称作回溯法。

怎么实现
关于迷宫怎么回溯,这就要用到栈的特性.
,

例如在这个迷宫中0表示墙,1表示通道,起点是二维数组得[0,1],终点是[3,5]。在走迷宫过程中,当走到[3,1]位置时,发现前面已经无路可走,这时候就要回退一步,回退到哪呢?显然是[2,1],按照这种方法遍历在最坏的情况下遍历所有通路自然是可以走出迷宫的.

到这里不难想到,迷宫中前进一步就相当于一次入栈,回退一步就相当于一次出栈.

编程要求
本题中,会给出顺序栈

struct SeqStack{
T* row; // 行
T* col; //列
int top; // 栈顶元素编号
int max; // 最大节点数
};

SeqStack* SS_Create(int maxlen); //创建空栈
void SS_Free(SeqStack* ss); //释放栈
void SS_MakeEmpty(SeqStack* ss);//栈空
bool SS_IsFull(SeqStack* ss);//判断栈满
bool SS_IsEmpty(SeqStack* ss);//判

相关文章:

  • 【夜读】坚持这5个习惯,遇见更优秀的自己
  • 算法与数据结构【30天】集训营——平衡二叉树的LL、RR、LR、RL调整的简单快速方法(16)
  • Java本地搭建宝塔部署实战医药WMS进销存源码
  • 基于meanshift算法的目标聚类和目标跟踪matlab仿真
  • Google Earth Engine ——把reducer统计的数据分别放在不同的列表中打印出来,使用unzip()函数
  • Ubuntu 18.04 LTS PWN安装
  • @Bean注解详解
  • Python学习笔记(十二)——面向对象三与运算符的重载
  • 一个基于Python数据大屏可视化开源项目
  • 【day13】【洛谷算法题】-P5713洛谷团队系统-刷题反思集[入门2分支结构]
  • 【开源WebGIS】05-Openlayers访问GeoServer发布的WMS数据并添加标注
  • JavaWeb编年史(青铜时代)
  • 机器学习笔记 - 模式识别的应用场景之一简单车牌识别
  • Selenium基础 — 多窗口操作
  • Nginx之动静分离
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • Go 语言编译器的 //go: 详解
  • IDEA 插件开发入门教程
  • Linux后台研发超实用命令总结
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Vue官网教程学习过程中值得记录的一些事情
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 基于游标的分页接口实现
  • 你不可错过的前端面试题(一)
  • 普通函数和构造函数的区别
  • 前端
  • 如何选择开源的机器学习框架?
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 译有关态射的一切
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 自动记录MySQL慢查询快照脚本
  • Python 之网络式编程
  • 仓管云——企业云erp功能有哪些?
  • ​flutter 代码混淆
  • #FPGA(基础知识)
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (1)SpringCloud 整合Python
  • (31)对象的克隆
  • (day6) 319. 灯泡开关
  • (Java)【深基9.例1】选举学生会
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (pojstep1.3.1)1017(构造法模拟)
  • (Python) SOAP Web Service (HTTP POST)
  • (ZT)出版业改革:该死的死,该生的生
  • (阿里云万网)-域名注册购买实名流程
  • (八)c52学习之旅-中断实验
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (接口封装)
  • (七)理解angular中的module和injector,即依赖注入
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)