从算法学起C语言--八枚硬币

博客介绍了如何通过分组比较策略,使用天平找出8枚硬币中的一枚假币,并确定其是轻是重。通过3次比较,确定假币所在的组及轻重,然后通过进一步比较确定假币。文章包含详细的逻辑分析和C语言代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请注明出处,谢谢~

背景说明:

现有八枚硬币a,b,c,d,e,f,g,h,已知其中一枚硬币是假币,其重量不同于真币,但不知道它是轻还是重,如何使用天平,以最少的比较次数,判断哪枚硬币是假币,并得知它是轻还是重。

不用白话文解释了吧。。。

首先果断放弃两两比较的方法,可行但肯定不是最快解。

这里我们用分段处理,将8个硬币分成三组,第一组是1,2,3;第二组是4,5,6;第三组是7,8.我们比较前两组的重量,如果相等,那么假币就存在与第三组中,再次比较第三组中两个硬币的重量,然后将较重的一个跟第一个硬币比较重量,就可以得知那个硬币是假币,并且得知轻重了,其他的情况于此类此,下面用代码走一遍看看逻辑执行。

void compare(int coins[],int i,int j, int k)
{
	if(coins[i] > coins[k])
		pri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值