目录
一,无砝码称重问题
1,算法谜题 44 孰轻孰重
有 n>2 个外观完全相同的硬币和一个没有砝码可用的双托盘天平。硬币中有一枚假币, 但不知道假币是比真币轻还是重, 其余的真币的重量都一样。设计一个算法, 用最少的称重次数判断假币真币孰轻孰重。
2,12个球称重
有12个球,其中一个质量不同,但不知道是更轻还是更重。请用天平称3次,把那个球找出来,并判断其是偏重还是偏轻。
答案:
第一次称必定是左边4个球,右边4个球,否则的话,如果至少有5个球,那么在2边不平衡的情况下就至少有10种情况,2次是无法分辨的,如果最多有3个球,那么在2边平衡的情况下就至少有12种情况,2次是无法分辨的。
左边4个球,右边4个球,无论是平衡还是不平衡,都有8种情况,所以2次都是有可能够的。
假设左边的4个球是1,2,3,4,右边的4个球是5,6,7,8,剩下的4个球是9,10,11,12
如果平衡的话,那么8个球都是正常的球,第2次称的时候左边放1,2,3,右边放9,10,11,后面自然就知道该怎么办了。第2次称还有1种方法,左边放1,9,右边放10,11,只有这2种方法了,理由和上面说的差不多。
如果不平衡的话,不妨设左边的4个球较重,第2次称有很多方法,例如,左边放1,2,5,右边放3,4,6,又例如,左边放1,2,3,5,右边放4,9,10,11,又例如,左边放1,2,3,5,6,右边放4,9,10,11,12,等等。后面自然就知道该怎么办了。
3,13个球称重
有13个球,其中一个质量不同,但不知道是更轻还是更重。请用天平称3次,把那个球找出来。
注:如果仅仅把上一题的12改成13的话,一定是无解的。所以本题是只需要找出球,不需要判断是偏轻还是偏重。
答案:
首先,我们依然可以得到结论,第1次称必定只能是左边4个球,右边4个球。理由和上题中的类似,稍微复杂一点。
假设左边的4个球是1,2,3,4,右边的4个球是5,6,7,8,剩下的5个球是9,10,11,12,13
如果平衡的话,第2次称可以左边放1,2,3,右边放9,10,11,后面自然就知道该怎么办了。
如果不平衡的话,那么就可以直接用上题的方法完成了。
4,算法谜题 95 最大-最小称重
给定 n>1 个硬币以及一个没有秤砣的天平秤, 请你在 (3n - 3) / 2 次称重中, 找出最轻的硬币和最重的硬币。
二,有砝码称重问题
1,算法谜题 11 假币堆问题
有 10 堆 10 枚外观完全一致的硬币, 其中有一堆全部都是假币, 其他各堆中的硬币都是真币。所有的真币重量都是 10 克, 假币则重 11 克。你有一把示数可读的秤, 可以称出任意数目硬币的实际重量。问最少称几次才能将全部都是假币的那堆硬币辨别出来?
只需要一次。将硬币堆从 1 到 10 进行标记。从第一堆硬币中取出一枚硬币, 从第二堆中取出两枚, 以此类推, 直到从最后一堆硬币中取出 10 枚硬币。称出所有这些取出来的硬币的总重量。与 550 做差, 差值就指示着假币堆的标号。例如, 如果取出硬币的重量是 553 克, 则 3 枚硬币是假币, 因此是第三个硬币堆是假币。