八枚银币中的假币算法

在八枚银币中存在一枚假币,其重量与真币不同。利用天平进行两次比较,通过分组和比较找出假币。第一次比较确定假币在剩余的四枚或另外六枚中;第二次比较进一步定位到假币并判断其轻重。算法基于决策树模型,以最小步骤找到假币。
摘要由CSDN通过智能技术生成

在八枚银币中,有一枚是假币,并且我们已知这一枚假币与其他七枚真币的重量不同,但不知道这一枚假币与其他七枚真币相比较而言是轻还是较重。我们可以通过一架天平来任意比较两组银币,设计一个高效的算法来检测出这一枚假币。

算法分析

大致算法过程见图1,以下为详细分析:

用一个数组存储八枚银币,首先将其分为两组:coins[0]、coins[1]、coins[2]和coins[3],coins[4],coins[5]进行比较。

(1)如果coins[0]+coins[1]+coins[2]==coins[3]+coins[4]+coins[5],就可以肯定这一枚有问题的硬币在coins[6]和coins[7]中。那么就比较coins[6]和coins[7]:

①如果coins[6]>coins[7],那么再比较coins[6]和coins[0]。

如果coins[6]=coins[0],那么就说明coins[7]为假币且较轻。如果coins[6]>coins[0],那么就说明coins[6]为假币且较重。

②如果coins[6]<coins[7],那么再比较coins[7]和coins[0]。

如果coins[7]=coins[0],那么就说明coins[6]为假币且较轻。如果coins[7]>coins[0],那么就说明coins[7]为假币且较重。

(2)如果coins[0]+coins[1]+coins[2]>coins[3]+coins[4]+coins[5]&#

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值