【python】BFS

本文介绍了Python中的BFS(广度优先搜索)算法,强调其用于寻找最短路径的特点。通过模板介绍和两个实例——马走日问题及闪现技能的路径规划问题,详细阐述了BFS的实现过程。在解决问题过程中,总结了输入处理、边界条件等常见问题及其解决方案。
摘要由CSDN通过智能技术生成

【python】BFS

BFS,

找到一个节点,不是目标就顺便把他的子节点加入到队列中,这个是一层一层的关系。永远是先找完第一层,再找第二层,所以可以实现最短路径,树会比较容易理解。但是注意,该记录不讨论权重
在这个里面涉及几个结构,队列和字典,列表

模板

初始化队列Q;
清除visited数组;
Q =起点S;
while(Q非空)
{
取队首元素U;出队;
if(U == 目标状态 && U在矩阵内) {…}
所有与U相邻且未被访问的状态入队;
标记U为已访问;
}’’’

例题1,马走日问题

下过象棋的人都知道,马只能走’日’字形(包括旋转90°的日),
现在想象一下,给你一个n行m列网格棋盘,
棋盘的左下角有一匹马,
请你计算至少需要几步可以将它移动到棋盘的右上角,
若无法走到,则输出-1. 如n=1,m=2,则至少需要1步;若n=1,m=3,则输出-1。

from collections import deque
def bfs(m,n):
    dx = [2,1,-1,-2,-2,-2,1,2]
    dy = [1,2,2,1,-1,-2,-2,-1]#写所有走的方向
    v={
   (x,y) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值