2024年物联网嵌入式最新蓝桥杯 扩散【第十一届】【决赛】【B组,阿里P8架构师物联网嵌入式开发大厂面试题总结

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

扩散

在这里插入图片描述

分析

给出四个点求经过2020分钟后扩散成几个点了,以点为中心向四周扩散的话容易想到是要使用BFS实现。但如果使用BFS的话不是等四五秒就出结果的,而这又是5分的最后一道题,真的很考验考生的心理压力。我看到有个思路是通过回路求的,能想到这方法也是厉害,反正我是想不到的,所以就老老实实使用BFS解决吧。

这题套用BFS模板就能得出结果,难就难在如何才能更优的存储、使用数据。在以前,我从来没有考虑过这种问题,以为只要思路到位了,数据类型再怎么不同,效率都不会相差太大。直到现在,我终于意识到了自己的错误,幸好没有在比赛上面犯错,这一切都能补救。一开始BFS的队列跟标记点我都是用列表存储的,跑了二十分钟都没有出结果,然后就有朋友建议这要用队列来做,于是我特地学习了几种队列才回来。

经过不断调试,我知道了以后该用什么数据类型作为队列,该用什么数据类型存储数据了。

我们先看几组图:

线程队列+集合

在这里插入图片描述
使用线程队列作为BFS的队列,用集合存储坐标,跑了2分22秒得出结果。

列表+集合

在这里插入图片描述
使用列表作为BFS的队列,用集合存储坐标,跑了1分31秒得出结果。

双向队列+列表

在这里插入图片描述
使用双向队列作为BFS的队列,用列表存储坐标,跑了8分30秒没有得出结果,我强行停止了。

双向队列+字典

在这里插入图片描述
使用双向队列作为BFS的队列,用字典存储坐标,跑了55秒得出结果。

双向队列+集合

在这里插入图片描述

使用双向序列作为BFS的队列,用集合存储坐标,跑了49秒得出结果。

通过比较我们发现,不同的数据类型它的处理速度是不一样的。在队列模型中,最快的是deque双向队列,其次是列表,最后是线程队列,没想到列表不是最慢的。

如果要进行数据存储的话集合是最快的,其次是字典,最后时列表,所以进行数据存储的话不要再使用列表啦!(更正:涉及数据查找时不要在列表里面查找)

根据以上结论,以后的BFS可以使用deque+集合的形式进行计算。(更正:不是一定需要使用集合,如果进行大量的数据查找,需要使用 xx in xxx时就要使用集合,其他情况使用列表对走过的位置标记也是没问题的。)

代码

下面看下代码实现:

from collections import deque
import  datetime
start = datetime.datetime.now()
visited = {(0,0),(2020,11),(11,14),(2000,2000)}
queue = deque([(0,0,0),(2020,11,0),(11,14,0),(2000,2000,0)])
result = 4
dx = (0,1,0,-1)
dy = (1,0,-1,0)



**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/848425dd2c49b8ff12fdc9e326921bcc.png)
![img](https://img-blog.csdnimg.cn/img_convert/0c4f710679f3d21bb18650de78505219.png)

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值