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

这篇博客探讨了如何解决《程序员的算法趣题》中的一个问题,即一个优秀的扫地机器人在不重复清扫同一区域的情况下,计算其移动12次的所有可能路径。博主通过建立二维数组并使用回溯算法来模拟机器人的移动,最终得出共有324932种不同的移动路径。
摘要由CSDN通过智能技术生成

《程序员的算法趣题》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 ran

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值