改编版汉诺塔问题(递归)

改变汉诺塔问题的一个条件:不允许从第一个柱子直接移动到第三个柱子上,也不允许直从第三个柱子直接移动到第一个柱子上。即:每次移动一定是移到中间杆或者从中间杆移出去。

此时的解题思路是:

考虑K个圆盘的移动情况。设将K个盘子从第一根柱子移动到第三根柱子共需要f(k)次移动

为了首先将初始时最底部最大的圆盘移动到第三根柱子上,首先需要将其上的K-1个圆盘移动到第三根柱子上(移动f(k-1))。这等价于移动K-1个圆盘从第一根柱子到第三根柱子。当这一移动完成时:第一根柱子上仅剩一个最大的圆盘,第二根柱子为空,第三根柱子按顺序摆放着K-1个圆盘。

为了让最大的圆盘从第一根柱子移动到第三根柱子上,需要先将最大圆盘移动到柱子二上(移动1次);再将K-1个圆盘从第三根柱子移动到第一根柱子(移动f(k-1)),移动次数等价于K-1个盘从柱子一移动到柱子三。

完成上述步骤后,将最大圆盘从柱子二移动到柱子三(移动1次)。最后将k-1个盘子移回第三根柱子(移动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值