【Java数据结构与算法】| 数组--天平称量问题

天平称量问题

题目:

有12枚硬币,其中有1枚是假币,但不知道是重是轻。现给定衣架没有砝码的天平,问至少需要多少次称量才能找到这枚硬币?

思考:

如何证明某个方案是最少次数?


解析:

随机将12枚硬币等分成3份,每份4枚;标记为A,B,C三份。将A放在左侧,B放在右侧,用天平称量A和B,分三种情况:

1、天平平衡
2、A(左)比B(右)重
3、A(左)比B(右)轻(这两种情况一样的)


分析:

1、天平平衡

  • 天平平衡,说明A、B中都没有假币,假币在C中,将C中的4枚编号为甲乙丙丁
  • 取甲乙用天平称量,若平衡,说明甲乙是真币,丙丁有一枚是假币。
  • 取甲丙用天平称量,若不平衡,说明丙是假币;若平衡,说明丙是真币,丁是假币。

2、A比B重

  • 说明假币必然在A、B中,C中的4枚都是真币。将A中4枚硬币编号为1234,B中编号为5678,C中编号为甲乙丙丁。
  • 选125放于左侧,34甲放于右侧;
  • 天平有三种情况:
    • 天平平衡:说明678含假币,且假币轻
    • 125比34甲重 说明12含假币,且假币重
    • 125比34甲轻 说明34含假币,且假币重 或者5是假币,且假币轻
  • 无论如何,最多再一次称量就可得到假币

3、理论下界
4、再次思考


代码:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值