- 砝码称重问题
有一个天平(天平两边均可放置物品),想要用它称出1~n克之间所有重量为整数克的物品。
问题一:至少需要多少个砝码?
问题二:每个砝码各重多少克?
- 题目举例理解
比如题目中的n=4,那么就需要称重量为1g、2g、3g、4g的四种物品;
我们可以使用两个重量分别为 1g 和 3g 的砝码处理。
1g重物 = 1g砝码
2g重物 + 1g砝码 = 3g砝码
3g重物 = 3g砝码
4g重物 = 3g砝码 + 1g砝码
这样就将四种重量的物品称出来了。
- 问题处理分析
- 问题一:至少需要多少个砝码?
首先我们要知道一个砝码只有3种使用方式:放在天平左边、放在天平右边、不放。
根据排列组合的方式,两个砝码就会有9中排列方式了,如图。
计算方式就是3*3 = 9。
同理,如果有3个砝码,那么排列方式就是在两个砝码排列方式的基础上再乘3。
即 3的三次方 = 27;
下一步:我们在知道了砝码可以有多少中排列方式以后,需要知道这些排列方式可以称出多少种不同的重量。我们以两个砝码(1g和3g)的排列组合为例,看一下9种排列方式能称出多少种重量。
左1 左 3 => 4 左1 右3 => 2 左1 右空 => 1
右1 右3 => 4 右1 左 3 => 2 右1 右空 => 1
左空 左 3 => 3 左空 右3 => 3 左空 右空 => 0
可以看到会出现一种天平上不放砝码的情况,是无效组合无法称出重量。剩余的其他组合称出的重量均会重复1次。最后9种不同的排列组合,只称出了4种不同的重量:1 2 3 4
所以我们可以总结出一个公式:
设:有k个砝码最多可以称出的重量为n
n = k的有效排列组合 / 2
k的有效排列组合 = 3的k次方 -1
n = (3的k次方 -1) / 2
所以这个问题就转化成了:(3的k次方 -1) / 2 >= n,求k的最小值。
- 问题二:每个砝码重多少克?
在k为1的时候,最多只能称一个重量即1g。砝码重1g
在k为2的时候,最多能称(3的k次方 -1) / 2 = 4 。因为我们需要称重是连续的,所以是4g。砝码为1g和3g
在k为3的时候,最后能称(3的k次方 -1) / 2 = 13 。砝码为1g、3g和13-1-3=9g
以此类推,可以发现砝码的重量为从 3的零次方~3的(k-1)次方
当然这是以最多的排列方式计算的,并不是唯一解。比如n=3时,我们可以根据以上方法使用1g和3g的砝码。同时我们也可以使用1g和2g的砝码。