[汉诺塔]
汉诺塔 初始状态汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
汉诺塔是源自印度神话里的玩具。 上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按大小顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
传说
在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。
不管这个传说的可信度有多大,如果考虑一下把64片金片,由一根针上移到另一根针上,并且始终保持上小下大的顺序。这需要多少次移动呢?这里需要递归的方法。假设有n片,移动次数是f(n).显然f(1)=1,f(2)=3,f(3)=7,且f(k+1)=2*f(k)+1。
此后不难证明f(n)=2^n-1。
n=64时,f(64)= 2^64-1=18446744073709551615
假如每秒钟一次,共需多长时间呢?一个平年365天有 31536000 秒,闰年366天有31622400秒,平均每年31556952秒,计算一下, 18446744073709551615/31556952=584554049253.855年
这表明移完这些金片需要5845亿年以上,而地球存在至今不过45亿年,太阳系的预期寿命据说也就是数百亿年。真的过了5845亿年,不说太阳系和银河系,至少地球上的一切生命,连同梵塔、庙宇等,都早已经灰飞烟灭。
和汉诺塔故事相似的,还有另外一个印度传说:舍罕王打算奖赏国际象棋的发明人──宰相西萨·班·达依尔。国王问他想要什么,他对国王说:“陛下,请您在这张棋盘的第1个小格里赏给我一粒麦子,在第2个小格里给2粒,第3个小格给4粒,以后每一小格都比前一小格加一倍。请您把这样摆满棋盘上所有64格的麦粒,都赏给您的仆人吧!”国王觉得这个要求太容易满足了,就命令给他这些麦粒。当人们把一袋一袋的麦子搬来开始计数时,国王才发现:就是把全印度甚至全世界的麦粒全拿来,也满足不了那位宰相的要求。 那么,宰相要求得到的麦粒到底有多少呢?
总数为 1+2+2^2 + … +2^63 =2^64-1
和移完汉诺塔的次数一样。我们已经知道这个数字有多么大了。
人们估计,全世界两千年也难以生产这么多麦子!
有预言说,这件事完成时宇宙会在一瞬间闪电式毁灭。也有人相信婆罗门至今还在一刻不停地搬动着圆盘。
没有合适的资源?快使用搜索试试~ 我知道了~
汉诺塔经典游戏_javaApplet
共18个文件
class:7个
java:6个
applet:1个
需积分: 9 9 下载量 127 浏览量
2011-04-13
23:15:25
上传
评论
收藏 29KB ZIP 举报
温馨提示
【经典汉诺塔游戏】 纯java applet实现。 可在网页中加载对应的<applet>标签,将程序嵌入其中运行。 支持全自动运行。 代码注释详细。 代码中每个类有详细介绍。 /** * 【源码分析】 * 1.Constants类 * 该类定义了游戏的常量,主要是关于圆盘的高度和最大宽度、塔柱的宽度和高度、塔之间距离,游戏区域 * 的坐标、高度和宽度。 * ... */ ... 详情见代码 下载后解压缩,直接导入myeclipse中即可运行, 或者直接运行项目根目录中的Towers.html文件也可。 *********************************************[注]源代码来自《jdk经典实例大全》一书 *********************************************
资源推荐
资源详情
资源评论
收起资源包目录
HanoiTower.zip (18个子文件)
HanoiTower
.project 386B
bin
java.policy.applet 141B
book
applet
tower
Params.class 535B
Disk.class 1KB
AutoPlayer.class 1KB
Constants.class 1KB
Tower.class 2KB
TowersApplet.class 4KB
GameGroup.class 7KB
[HanoiTower]汉诺塔简介.txt 2KB
Towers.html 1KB
src
book
applet
tower
Disk.java 2KB
Tower.java 3KB
GameGroup.java 11KB
Constants.java 2KB
TowersApplet.java 12KB
Params.java 2KB
.classpath 232B
共 18 条
- 1
资源评论
DLCV
- 粉丝: 3
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功