算法:找假币问题

一、问题描述:

找假币问题:一个袋子里有30个硬币,其中一枚是假币,并且假币和真币一模一样,仅凭肉眼无法区分,仅知道假币比真币轻一些,用分治策略找出假币。

 

二、算法描述:

划分的思想,但是注意奇数和偶数的情况的下的不同处理。

  • 偶数情况:

平均分为左右两块,再比较左右两边重量的差异,对于轻的一方,再度调用该函数进行比较,问题规模减半。如若两边重量一致,则没有假硬币。当问题处理最终硬币个数为一个的时候,递归终止,该硬币即为假硬币。

  • 奇数情况:

对于位于中间的硬币进行单独的处理,再将剩下的硬币进行平均分配,比较左右两边硬币的总重量,轻一方包含着假硬币,问题规模减半,再度调用该函数对于这一部分硬币进行处理,当两边重量一样时,就对单独分离出来中间位置的硬币和其他的硬币进行重量的比较,如果重量不一样,该硬币即为假硬币,否则就没有假硬币。

问题规模削减到一个的时候,该硬币即为假硬币,递归调用终止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值