玩九连环

最近玩到了九连环,挺有趣的,用到的算法是递归。


首先发现的是,无论上环还是下环,都要从两横杠中间套上或放下。
套上是把某一环从两横杆中拉出, 往两横杆闭合处穿上;
放下是把某一环从两横杆闭合处拉出,往两横杆中放下。


紧接着,发现了两个规则:
1.一二环可以同时套上或放下;
2.要上或下某一环(设为n)时,必须第n-1环在架上,n-1环前面没有环在架上。


这样就不难发现,除了12环可以直接下,其他环都要转变(前面环都下完了):
下第n环  => 上第n-1环  => 上第n-2环  =>......=> 上第2环


举个例子,下第5环:
上2(结果52在上):上12下1
上3(结果53在上):上3上1下12
上4(结果54在上):上4上12下1下3上1下12
下5(结果4在上):下5
接下来,问题就变成下第4环了。


上环同理。


总之,解9连环,就是先解一个7连环,再解第9环,再上7连环,再解8连环......这就是递归了。

解第n环时,时刻记住两个条件:第n-1环在架上,n-1环前面没有环在架上。



网上说解9连环需要341步,它是一上或一下就称为一步,比较繁琐。其实12环完全可以直接上或下,这就少了很多步。

最后,我感觉比较好的解法是:下第1环,下3环,下2环,下5环,下4环,下7环,下6环,下9环,下8环。



刚开始解得时候有时会发现自己有点晕,忘了在解到哪一步,因为基层的环要解太多次了;解多几次就会坚定下来了。


鉴于博主语言表达能力有限,未详尽说明之处,望多加包含。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值