玩九连环
来源:互联网 发布:国际通用顶级域名 编辑:程序博客网 时间:2024/05/17 09:15
最近玩到了九连环,挺有趣的,用到的算法是递归。
首先发现的是,无论上环还是下环,都要从两横杠中间套上或放下。
套上是把某一环从两横杆中拉出, 往两横杆闭合处穿上;
放下是把某一环从两横杆闭合处拉出,往两横杆中放下。
紧接着,发现了两个规则:
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环了。
上环同理。
刚开始解得时候有时会发现自己有点晕,忘了在解到哪一步,因为基层的环要解太多次了;解多几次就会坚定下来了。
鉴于博主语言表达能力有限,未详尽说明之处,望多加包含。
首先发现的是,无论上环还是下环,都要从两横杠中间套上或放下。
套上是把某一环从两横杆中拉出, 往两横杆闭合处穿上;
放下是把某一环从两横杆闭合处拉出,往两横杆中放下。
紧接着,发现了两个规则:
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环。
刚开始解得时候有时会发现自己有点晕,忘了在解到哪一步,因为基层的环要解太多次了;解多几次就会坚定下来了。
鉴于博主语言表达能力有限,未详尽说明之处,望多加包含。
0 0
- 玩九连环
- 玩九连环
- 九连环
- 九连环问题解决
- 九连环的解法
- 关于九连环
- 九连环问题解决
- 九连环玩法
- 九连环-递归解法
- 九连环所有步骤
- hrbust 1401 九连环
- Android版九连环NingRings
- 九连环分析与实现
- 九连环解法java版
- 连环锁 POJ - 1832(九连环的推广)
- asp.net 实现“九连环”小游戏
- 用asp.net 实现“九连环” 小游戏
- asp.net实现“九连环”小游戏
- 密封类 - 断子绝孙类
- UnityEvent与C#事件系统性能对比
- 说说ios程序启动那些事儿
- lintcode,二叉树中的最大路径和
- 亮灯问题
- 玩九连环
- 丹的Python学习笔记Day4数组
- getchar()在C程序中的妙用!
- 后台到数据库乱码问题
- CodeForces - 742C Arpa's loud Owf and Mehrdad's evil plan
- 引用类型错误导致编译错误------浪费5-10分钟
- AOP面向切面编程简介
- jQuery
- sparksql获取网络输入流