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

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





