'C 语言' | 假币问题的递归算法

假币问题

【问题描述】

一个袋子里有30个银币,其中一枚是假币,并且假币和真币一模一样,肉眼难以分辨,目前已知假币比真币重量轻一点。请问,如何分辨出假币?

【问题分析】

首先为每个银币编号,然后将所有的银币等分为两份,放在天平的两边。这样就将区分30个银币的问题变为区别两堆银币的问题。

因为假币分量较轻,因此天平较轻的一侧中一定包含假币。

再将较轻的一侧中银币等分为两份,重复上述做法。

直到剩下两枚银币,便可用天平直接找出假银币。

【问题代码】

#include <stdio.h>
//本题是C语言菜鸟编写,部分代码赘余,请见谅!! 
//注意当我们用递归时,一定要返回你说递归的值!! 
int getplace(int a[], int Cen, int Hlen);
int weight(int x[], int Cen, int Hlen);
int main()
{
   
	int a[30] = {
   1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值