ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH搜索     
EH云课堂-专业的职场技能充电站 Excel转在线管理系统,怎么做看这里 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 高效办公必会的Office实战技巧 免费下载Excel行业应用视频
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 5264|回复: 42

[讨论] 九连环VBA解法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-6-6 21:15 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:递归
本帖最后由 banjinjiu 于 2013-6-6 22:19 编辑

九连环
    九连环是中国民间玩具。以金属丝制成9个圆环,将圆环套装在横板或各式框架上,并贯以环柄。游玩时,按照一定的程序反复操作,可使9个圆环分别解开,或合而为一。中文名:九连环外文名:Nine Rings游戏类别:中国传统智益游戏发源地:山西起源:西汉.
    看到论坛没有九连环的帖子,所以冒昧的发上来,请各位大侠用VBA的方法来解。我特意用图解的方法把大致过程说了,不懂实物解法的百度下。实物我玩过的,VBA我就不懂了。希望能见识各位的真功夫,开始吧。
      
九连环
原始状态
1
2
3
4
5
6
7
8
9
 
 
 
 
 
 
 
 
 
第一步
 
2
3
4
5
6
7
8
9
1
 
 
 
 
 
 
 
 
第二步
 
2
 
4
5
6
7
8
9
1
 
3
 
 
 
 
 
 
第三步
1
2
 
4
5
6
7
8
9
 
 
3
 
 
 
 
 
 
第四步
1
 
 
4
5
6
7
8
9
 
2
3
 
 
 
 
 
 


    请用VBA把九连环的上法、下法补充完整。一共需要多少步?
不了解规则的去百度。
附件:

九连环.zip

2.96 KB, 下载次数: 42

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-6 21:22 | 显示全部楼层
听说采用递归的方法,共需要三百四十一步。这个好像是香川老师的强项,我今天看了“数方格”才程序都没看懂(惭愧),而且还创造了“数方格走迷宫”程序。

TA的精华主题

TA的得分主题

发表于 2013-6-6 21:51 | 显示全部楼层
什么九连环,这个和 hanoi 汉诺塔非常类似吧。 9层汉诺塔是512步。


这个用递归做也特别简单的。


TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-6 22:02 | 显示全部楼层
本帖最后由 banjinjiu 于 2013-6-6 22:07 编辑
香川群子 发表于 2013-6-6 21:51
什么九连环,这个和 hanoi 汉诺塔非常类似吧。 9层汉诺塔是512步。


我把九连环游戏用数学的方法表达出来,一上一下,我觉得能形象的代表了实物的动作,不然用excel不好表述。
前面有人做了汉诺塔,魔方,华容道,移动十五(九宫格),我把这个九连环放上来,差不多智力游戏类的就全了,香川老师,辛苦了。我们论坛因为有了你们这些高手才发扬光大。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-6 23:05 | 显示全部楼层
香川群子 发表于 2013-6-6 21:51
什么九连环,这个和 hanoi 汉诺塔非常类似吧。 9层汉诺塔是512步。

香川老师,我的原图有点错误,我修改了,另外附件也更新了。

TA的精华主题

TA的得分主题

发表于 2013-6-7 05:11 | 显示全部楼层
你还需要多演示几步,至少演示到第4环,最好演示到第5环。

否则不知道接下来该如何做。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-7 08:07 | 显示全部楼层
香川群子 发表于 2013-6-7 05:11
你还需要多演示几步,至少演示到第4环,最好演示到第5环。

否则不知道接下来该如何做。

一种方法就是二进制,111,011,010,110,100,……大概是这样的,
还有一种实物的解法,好像是你说的递归吧:
要想9下,必须8在上,必须7,6,5,4,3,2,1在下;
要想8下,必须7在上,必须6,5,4,3,2,1在下;
要想7下,必须6在上,必须5,4,3,2,1在下,
要想6下,必须5在上,必须4,3,2,1在下,
要想5下,必须4在上,必须3,2,1在下,
……

TA的精华主题

TA的得分主题

发表于 2013-6-7 10:48 | 显示全部楼层
banjinjiu 发表于 2013-6-7 08:07
一种方法就是二进制,111,011,010,110,100,……大概是这样的,
还有一种实物的解法,好像是你说的递 ...

你都写那么多了,忽然最后几个又偷懒了。

帮你补充完整,你确认一下是否理解正确。


另外,还需要把各种上的状况也都详细列出来。
因为只有下,没有上是无法进行下去的。


全部各种下的条件:
要想9下,必须8在上,以及7,6,5,4,3,2,1在下;
要想8下,必须7在上,以及6,5,4,3,2,1在下;
要想7下,必须6在上,以及5,4,3,2,1在下;
要想6下,必须5在上,以及4,3,2,1在下;
要想5下,必须4在上,以及3,2,1在下;
要想4下,必须3在上,以及2,1在下;
要想3下,必须2在上,以及1在下;
要想2下,必须1在上;
要想1下,任何时候都可以。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-7 11:16 | 显示全部楼层
本帖最后由 banjinjiu 于 2013-6-7 11:29 编辑
香川群子 发表于 2013-6-7 10:48
你都写那么多了,忽然最后几个又偷懒了。

帮你补充完整,你确认一下是否理解正确。


九连环上法:
1上,直接上;
2上,1下;(实物可以直接上,1下,或者1上都可以,不是必须的;)
3上,必须2在上,必须1下;
4上,必须3在上,必须2,1下;
5上,必须4在上,必须3,2,1下;
6上,必须5在上,必须4,3,2,1下;
7上,必须6在上,必须5,4,3,2,1下;
8上,必须7在上,必须6,5,4,3,2,1下;
9上,必须8在上,必须7,6,5,4,3,2,1下;
(另外,你提的下法中,“要想2下,必须1在上”,好像与实物不符,我的理解是要想2下,可以直接下,也可以1下,有2种方法,当然为了算法连贯,是可以的。)

TA的精华主题

TA的得分主题

发表于 2013-6-8 07:13 | 显示全部楼层
查了一下【九连环解法】,就是二进制循环。

123456789全部在上面,要求全部取下时,步骤一共是 256次。(=2^8)

其中,1、2可以同时一起进行上下,只算一次。
如果这个1、2同时上下的步骤要算2步,那么总共就是 341次了。
(1、2同时上下共85次,乘以2=170次,其余单步的171次,因此合计=341次)

九连环.jpg
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关注官方微信,每天学会一个新技能

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2019-8-18 13:44 , Processed in 0.109103 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2020 Wooffice Inc.

   

沪公网安备 31011702000001号 沪ICP备11019229号

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:徐怀玉律师 李志群律师

快速回复 返回顶部 返回列表