有16个一元硬币,其中有个是假的,设计个最简单的办法找出那个假的,最好用到折半查找法。

来源:百度知道 编辑:UC知道 时间:2024/06/04 20:14:08
我们现在正在学习数据结构的折半查找算法,希望用到这个算法解决这个问题,老师也没说这个假硬币是重些还是轻些。

如果没有说轻重的话应该分成四组,每组4个硬币
第一次:将其中一组放在天平一边,另选一组放在天平另一边
第二次:固定第一组,选择第三组放在天平另一边;
这样就可以得知哪组中有假硬币了(不分轻重,但能显示出这一组与其他组重量不一样);
确定这一组后,把4个硬币分成4组,每组一个;再用上述方法测两次就可以确定哪个是假的了;
一共测4次。

简单,1、从16硬币中选8个,放天平两边,一边四个。
2、(1)若天平平衡则将未放上天平的四个放在天平两边,一边两个。
(2)若天平不平衡,则未放上的为真,排除。天平上依然有四个。
3、将天平两边的硬币一边拿掉一个,看天平是否平衡。
4、(1)若天平平衡则两边都为真,将一边的真硬币拿掉,依次换上步骤3拿掉的两枚,平衡为真,不平衡为假。
(2)若天平不平衡则步骤3拿掉的硬币为真。将天平一边的一枚硬币拿掉,依次放上步骤3的两枚硬币,如两枚都平衡,则拿掉为假;如一平衡,一不平衡则不平衡的为假。

如果不要求步骤的次数就好说一些了。
首先要1个天平秤。每边放8枚硬币。当然 其中一头存在一个假币,不过不知道是轻还是重。 没关系,从现在开始,每边拿掉一个,观察天平变化,一旦天平平衡了,就说明假币被取走了。就在刚刚拿掉的那两个硬币之中。现在拿掉其他的硬币,把有假币的那两个硬币的任意一个放回天平。
现在只需要做一步 就完成了,拿一个真币放到天平的另一边,如果平衡,那刚刚没放上去的就是假币,如果天平依然倾斜,那天平上的那个就是假币。

老师也没说这个假硬币是重些还是轻些

知道重量和真硬币比一样就可以了,管它是重还是轻呢

先把16个硬币分成四份(每份四枚硬币),分别测重量,其中有一份重量和另外三份不一样,那就说明假币在那一份中;其余的三份(共有12枚硬币)全部是真的。把含有假币的那一份中的每一枚与真币作比较,很快就能找出假币。

当然是有区别了,我们假设假的重量轻。
分为两份,放到天平两边,找出轻的一边8
分为两份,找出轻的一边4
分为两份,找出轻的一边2
分为两份,找出轻的就是假的。