C语言实现bfs

文章介绍了如何利用队列思想解决迷宫中的最短路径问题,特别是通过广度优先搜索(BFS)方法,通过不断扩展当前节点的邻接节点并更新起点的位置,找到最短路径。与深度优先搜索(DFS)的区别在于BFS寻找的是最短路径而非所有路径。
摘要由CSDN通过智能技术生成

还是搜索,可以解决迷宫最短路径问题

这是核心:队列思想

一共有三个量

数组a[1000],一个head,一个tail

道理和咱们平常站队是一样的,来一个数据就加到tail的后面,如果最前面的数据不需要了,就head++,跑到下一个格子里。可能还会有点抽象。

看个图

可能看到这个会有点蒙,这有什么用呢,其实这个就是假如说我要用前面的一个数据,但是他不在前面,就需要让他前面的所有人滚出队伍,那他就排到最前面了,就可以使用他了

这是bfs里面的一个代码

理解一下

主要是右半部分的while循环,根据一个坐标,他是不是可以推出很多个不同的走法,然后把这些走法不同的记录下来,然后把那个起始的坐标移除队伍中,下一次循环用的就是刚才推出的几个坐标,以此类推,咱们不是要找最短路径吗,最短路径用的步数最少,她肯定最先找出来,只要跳出了,就是最短路径,大概就是这么个道理。

bfs和dfs的区别就是一个是撞了墙然后回头,从所有路径的比较后,找出最短的路径。另一个是走一遍所有的格子,找到最先出来的那个路径。

大概是这么个意思,加油!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值