走迷宫(广度优先搜索)

该博客介绍了如何使用广度优先搜索(BFS)解决迷宫问题,找到从起点到终点的最短路径。在10*10的迷宫地图中,起点位于第一行第二列,终点位于最后一行第九列。通过创建节点结构体,利用队列进行BFS搜索,同时记录已访问节点以避免重复,最终找到最短步数。
摘要由CSDN通过智能技术生成

Q:给出一个迷宫地图,计算最快走出迷宫需要多少步?

输入:
每组数据是10*10,由‘#’和‘.’组成的迷宫,其中‘#’代表墙,‘.'代表通路;
入口在第一行第二列,出口在最后一行第九列;
从任意一个‘.’都能一步走到上下左右的‘.’;
输出:
每组数据,输出从入口到出口最短需要多少步

解题思路:

  • 因为要求出最短路径,因此我们很容易想到利用广度优先搜索来计算路径
  • 广度优先搜索(BFS):利用队列先进先出的特点,首先判断队头元素是否为要找的节点,如果不是则将队头节点相邻的所有结点都入队,并移除队头元素;循环判断后直到队头节点为要找的节点或者返回空(没有到达路径)
  • 本题中我们将节点定义为一个结构体,方便使用,结构体元素有横坐标、纵坐标以及它到达该位置走了多少步
  • 如果在走的过程中,我们可能会重复走到同一个节点,因此我们需要标记一下已经走过的节点,提高我们的搜索效率;在这里我们定义一个和迷宫同样大小的数组,数组元素类型为布尔类型,代表该节点有没有走过,如果走过则为TRUE,否则为FALSE
  • 首先将起点位置入队,之后依次判断上下左右四个方向,如果符合条件则入队,并将他们的步数+1
  • 循环判断队头元素,直到队头元素的坐标值为出口位置就返回它的步数值,否则返回0(具体可以画图来更好理解ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值