没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
前段时间抽空看了《说谎者悖论和汉诺塔游戏》([加拿大]马塞尔·丹尼斯著,程云
琦译)一书,作者在第一个谜题“斯芬克斯之谜”中介绍了法国耶稣会诗人 Claude
Gaspard Bachet de Méziriac(1581-1638)的一个经典谜题:
若天平两端可以任意放置砝码,要称量从 1 磅到 40 磅的整磅重的糖,天平所需要
的砝码个数最少是多少?
换句话说,我们需要确定若干个读数互不相同的砝码,用它们在天平上组合出 1 至
40 的数。当然,前提是这是台特殊的天平——你不能开玩笑说天平上还有游码,也
不能说砝码的规格是有限定的。我们假定砝码值可以是任意正整数。传统上我们可
能认为 1,"Times New Roman";" lang="EN-US">2,4,8,16 和 32 磅共 7 个
砝码,这样最高可以称出 63 磅重的糖。不过这个谜题有意思的地方就在于它使用
的是天平 quot;Times New Roman";" lang="EN-US">——两边都可以放砝码。
于是我们可以这样来称出 2 磅重的糖:把 3 磅重的砝码放在天平的左边,1 磅重的
砝码放在天平的右边,在天平右边放上糖直到天平平衡。这样,只需要 1,3,9 和
27 磅的砝码就可以称出 1 磅到 40 磅的糖。
注意到这些砝码的重量都是 3 的幂:1=3
0
,3=3
1
,9=3
2
,27=3
3
。依次类推,我
们可以使用 1,3,9,27 和 81 磅的砝码称出 1 磅到 121 磅的糖。
那么针对具体数量的糖,怎样放置各个砝码呢?作者给出了如下图所示的称法。
图 1 砝码放置
作者似乎想表达的是,具体的砝码放置法的获得是来源于所谓的“顿悟思维(insight
thinking)”。不过写个具体的算法来实现针对具体数值的砝码放置方案并不难。
我们同样假定称量时将糖放置在天平右边。那么算法就是要实现,在输入砝码个数
和需要称量的最大数值后,输出如图 1 所示的列表。若称量的数值超过砝码所能称
量的最大数值,则提示出错(比如四个砝码不能称出 41 磅糖)。
我们假设要称量的数值为 n。算法的基本思想是,通过判断 n 所在的“区间”,迭
代地把砝码加到天平左右两侧。这里的“区间”指的是,将砝码的值按从小到大累
积相加,形成一个新的数列,其中 n 所在的前开后闭区间。如,对于砝码 1,3,9
和 27,其累积和形成的数列为 1,4,13,40。如 3 所在的区间为(1,4],而 13
所在的区间为(4,13]。
仍假定 n=5。算法的运行过程如下:
剩余6页未读,继续阅读
资源评论
艾斯·歪
- 粉丝: 42
- 资源: 342
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功