数据结构设计_数据结构课程设计——迷宫求解(六)

本文是迷宫求解系列的最后一部分,介绍了一种预处理方法来解决迷宫问题。通过遍历迷宫矩阵,标记并堵塞死胡同,以简化迷宫结构。在判断和标记死胡同的过程中,利用邻居位置的和对3取余,若为0则标记为死胡同。此方法虽复杂度较高,但能有效找到唯一出路。课设过程中还涉及图形界面优化和多种算法的整合。
摘要由CSDN通过智能技术生成
d3497f919b009ef42e354ba84a7fef64.png前言

前面多篇推文已经介绍了整个课设的绝大部分内容,本文是迷宫求解系列的最后一篇推文。

本文将介绍最后一种寻找迷宫出路的方法,复杂度较高,文末也将对此次课设进行总结。

0 1新的思路

此次介绍的求解迷宫的方法,说起来很简单,这一方法在实现之前经过了反复思考与确认,最终也实际验证过,简单来说是一种预处理的方法。

遍历迷宫矩阵,将所有的死胡同堵上。

总结起来只有上面这一句话,但是如何实现就是一个难题了,首先是如何定义这个死胡同。四周都是墙壁那肯定是死胡同,问题是生成的迷宫里面不会有那种四周都是墙壁的,所有应当是三面是墙壁,只有一面是道路,这才是死胡同,把这个位置标记为死胡同。

但是只标记这个位置就行了吗?它只有一面是道路,可是和它相邻的这个道路也有可能是属于死胡同的一部分,只是把死胡同的尽头那个位置标记上显然是不够的,所以我们还需要在标记一个位置之后,对它的唯一邻居也进行判断,接下来是邻居的邻居,.........。直到某一个位置不止一个邻居,那么它显然就不属于死胡同,或者说当前不能确定它是死胡同的一部分,这时候才结束判断。

有了上述关于一个位置是否为死胡同的判断标准之后,就可以开始接下来的内容了。

0 2思路实现

先思考下我们需要什么?

判断一个位置是否只有唯一邻居,即该位置是否为死胡同。

如果一个位置只有唯一邻居,找到它唯一邻居的位置,重复上一步的判断。

其实说了很多,有一个很重要的地方还没有说明。我们对一个为死胡同的位置该如何标记的问题,由于此前的几个算法使用 -1 标记试探过的点,而这里死胡同并不属于试探过程,而是一个预处理过程,而且也为了表示上的统一,此处不使用-1标记死胡同,使用数字4标记。

实际上如果使用一个负数进行标记也会给判断死胡同带来麻烦。

标记过程可以看成是,将死胡同的尽头新砌一堵墙,死胡同的邻居就有可能成为砌墙之后的新死胡同的尽头了。

既然看成是新砌一堵墙,那么标记为什么不直接使用 1 呢,1 不就代表墙壁吗,而且判断还更加方便。关于这个问题,这是因为我在课设中设置了重新初始化迷宫这一步,它的作用就是当按钮选择一

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值