ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7340|回复: 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, 下载次数: 54

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-6 21:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
听说采用递归的方法,共需要三百四十一步。这个好像是香川老师的强项,我今天看了“数方格”才程序都没看懂(惭愧),而且还创造了“数方格走迷宫”程序。

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 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
你还需要多演示几步,至少演示到第4环,最好演示到第5环。

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

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-7 08:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
香川群子 发表于 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 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
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 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 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 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
查了一下【九连环解法】,就是二进制循环。

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

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

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

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-20 11:26 , Processed in 0.050041 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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