《程序员的算法趣题》Q08 优秀的扫地机器人

程序员的算法趣题Q08:优秀的扫地机器人 题目 现在市面上有很多扫地机器人,能够为我们分担家务,但是我们很难理解,有时候扫地机器人会重复清扫同一块地方。 假设现在有一款扫地机器人,不会重复扫过的地方,如果它要走四步,在走了第一步后,移动三步有如下9种路径; 第一步可以走4种路径,总共情况有 9*4=36 种路径。 思路: 1.可以(0,0)来表示初始位置,每次可以有四个方向可以选择 上(1,0),下(-1,0),左(0,-1),右(0,1) 2.用一个集合保存所有已经走过的位置,过滤重复走的位置 实现 public class Floormo 阅读详情

《程序员的算法趣题》Q08 优秀的扫地机器

第一次写博客,请多见谅。

目前在看图灵程序设计丛书绝云译的《程序员的算法趣题》,书中是用Ruby实现的。因为没学过Ruby,只能大致理解。python也是刚入门,感觉网上的答案有点难理解,自己尝试写了一个比较初级的代码。

问题描述

现在有很多制造商都在卖扫地机器人,可是这些机器人有时候会反复清扫某一个地方。假设有一款机器人不会反复清扫同一个地方,它只能前后左右移动。举个例子,如果第1次向后移动,那么连续移动3次时,就会有以下9种情况(见图)。又因为第1次移动可以是前后左右4种情况,所以移动3次时全部路径有 9 * 4 = 36 种。那么求这个机器人移动12次时,有多少种移动路径?(P029)
在这里插入图片描述
思路

灵感来自迷宫的回溯算法
因为移动12次,所以先建立一个25*25的全零二维数组web。
点的初始位置是web[12][12],并赋值1.
定义一个函数,对点进行上下左右移动,并判断是否是否已经过,完成一次移动,再调用自身。

在这里插入图片描述
web=list([0 for i in range(25)] for j in range(25))#建立一个25*25的全零二维数组web
count=0#计数
web[12][12]=1
def move(x,y,k):#x是点位置的横坐标,y是纵坐标,k是移动次数
global count
if k!=12:
for i in range(4):#0上 1下 2左 3右
if i == 0

扫地机器人的模拟程序 (1) 前言 在朋友的推荐下,尝试写一个模拟的扫地机器人的程序,当做是练习(工程能力和算法)写这篇文章一是记录和分享思路,也希望获得更多意见和建议,欢迎评论 效果 本来是打算最后再贴图的,文章没啥人气,加上感冒偷个懒就先贴个图吧(不知道为什么没办法直接贴图片,只好贴链接了)https://wx1.sinaimg.cn/mw1024...https... 阅读详情

相关推荐

扫地机器人源码及解释

本设计采用stm32c8t6进行开发,功能大概为通过光电传感器采集车周边信息给单片机,单片机根据采集到的信息作出分析控制小车进行运动来进行s型擦桌子,同时新添自动定时洒水功能。时间有限,只经过初步测试,有需要可以参考一下,有机会会继续优化更新。 内容附上原理图,程序以及解释文档

机器人C语言代码的一个详细例子

该程序展示了机器人是如何避障,如何转弯 是针对上海英集斯自动化有限公司的经济型机器人的一个代码

智能扫地机器人仿真代码

智能扫地机器人仿真代码,使用平台Matlab、VS,使用语言C++、C

RobotBASIC机器人割草(扫地)程序

使用robotBasic模拟器,模拟机器人在真是的环境中割草或扫地的程序。

扫地机器人仿真实验C++

智能扫地机器人仿真代码,使用平台Matlab、VS,使用语言C++、C

[ESP32]:基于esp-modbus实现serial主机

[ESP32]:基于esp-modbus实现serial主机

LINKKEEE的博客 2567

从光耦隔离到稳定驱动:信捷伺服与STM32的硬件设计陷阱与救赎

本文深入探讨了信捷伺服驱动器与STM32微控制器配合时的硬件设计关键问题,包括光耦隔离电路选型、电源电压选择、拨码开关设置等核心环节。针对伺服驱动器的稳定驱动需求,提供了从电路设计到抗干扰策略的完整解决方案,帮助工程师规避常见陷阱,提升工业控制系统的可靠性。

gold8的专栏 312

开源低场MRI系统构建:从原理到三天实现

磁共振成像(MRI)作为现代医学影像的核心技术,其高场强系统存在成本和技术门槛问题。低场MRI通过开源硬件和模块化设计实现技术民主化,采用永磁体替代超导磁体可大幅降低系统复杂度。本文以H型永磁体设计为例,结合MaRCoS开源控制库和PyPulseq脉冲序列工具,展示了如何快速构建教育级MRI系统。关键技术包括遗传算法优化的匀场方案、CNC加工的梯度线圈,以及基于Red Pitaya的SDR控制架构。这种轻量化方案特别适合医学物理教学和脉冲序列开发验证,为MRI技术在资源有限地区的普及提供了新思路。

weixin_30470643的博客 449

智能车新手必看:如何用PID和差速转弯让小车跑得更稳(附代码示例)

本文详细介绍了智能车控制系统中PID算法和差速转弯的实现方法,包括位置式与增量式PID的选择、参数整定技巧以及编码器反馈的关键作用。通过代码示例和实战经验,帮助新手快速掌握智能车稳定行驶的核心技术,提升赛道表现。

mmm90的博客 122

Type-C快充移动电源芯片避坑指南:IP5356配置全流程(支持PD3.0)

本文详细解析了英集芯IP5356芯片在Type-C快充移动电源中的应用,提供了从芯片选型、原理图设计、PCB布局到PD协议调试的全流程实战指南。文章重点剖析了如何避免散热、EMI及协议握手等常见设计陷阱,并分享了量产前的关键测试验证方法,旨在帮助硬件开发者高效打造稳定可靠的快充产品。

weixin_29235525的博客 849

DIC新手避坑指南:压缩实验中的应变测量常见错误与数据校验技巧

本文为DIC技术新手提供了压缩实验中应变测量的全面避坑指南。文章系统梳理了从试样尺寸录入、散斑质量到数据后处理中应变方向与符号混淆、数据插值对齐等常见错误,并分享了基于MATLAB的自动化数据校验与可视化对比技巧,帮助建立可靠的实验数据分析SOP,确保DIC测量结果的准确性。

weixin_29313423的博客 113

YOLO26改进策略【Neck】| CVPR2025 LCA轻量交叉注意力 跨层级双向引导 + 分层降噪增强,提升微小目标特征表达

简单相加、拼接融合无法建立深浅层双向约束关系,浅层微小目标易被深层背景覆盖,深层全局信息难以修正浅层噪声;普通单路自注意力仅单一层内建模依赖,缺少跨层级特征互引导机制,深浅特征信息割裂;标准多头跨注意力计算量大、参数量高,轻量化单模态检测/分割网络部署困难,无法区分前景目标与背景噪声。为此设计单模态轻量化交叉注意力LCA,构建浅层细节、深层语义双分支双向引导结构,轻量完成跨层级特征交互,同步降噪并强化单模态微小目标特征。

Limiiiing的博客 523

Linux 内核参数:meminfo

内存管理是一个相对复杂的内核模块,错综复杂的数据结构和管理逻辑。Linux 内核为了帮助开发者从宏观上把握内存的使用情况,在几大核心数据结构中都有相应的计数统计,如物理页面使用情况、伙伴系统分配情况、内存管理区的页面使用情况、内存回收扫描回收情况、内存规整触发情况等等。本文要分析的节点meminfo是Linux 操作系统中查看系统内存最准确(meminfo 中有内存黑洞)的方法,它包含当前时刻系统的所有物理页面的信息。

私房菜 2413

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

下一篇: 网易牛牛背包
createcloud
博客等级 码龄8年 0粉丝 7原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值