三分法查找假币问题及C语言实现 三分法查找假币问题是一个经典的算法问题,可以通过三分法在一组硬币中找出一个较轻或者较重的假币。假设有一组硬币,其中有一个假币,重量与真币不同,但不知道假币是较轻还是较重。给定一组硬币和天平,最少需要几次称重才能确定假币的重量和假币是较轻还是较重呢? **解题思路**: 1. 如果硬币数量为奇数,则将硬币分成三堆,每堆硬币数量尽量相等。 2. 如果硬币数量为偶数,则将硬币分成三堆,每堆硬币数量尽量相等,多出来的硬币放在一堆。 3. 将两堆硬币放在天平两端称重: - 如果天平平衡,则假币在剩下的一堆硬币中。 - 如果天平不平衡,则假币在较轻的一堆硬币中(如果天平左边轻,则假币轻;如果天平右边轻,则假币重)。 4. 对剩下的一堆硬币重复以上步骤,直到找到假币为止。 下面是一个使用C语言实现的三分法查找假币的示例代码: ```c #include // 假设硬币编号从1开始,num为硬币总数,light为假币编号,isLight表示假币是较轻还是较重 void findFakeCoin(int num, int light
2024-06-25 12:40:43 14KB
1
内含假币算法求解(三分算法和二分算法)源代码
2022-01-02 20:16:11 5KB 算法 假币问题 源代码
1
个人设计编写的算法分析与设计中的假币问题,其中用到分治策略。采用三分法。
2021-10-17 15:58:49 10KB 假币 算法分析 设计 假币问题
1
在n枚外观相同的硬币中,有一枚是假币,并且已知假币与真币的重量不同,但不知道假币与真币相比较轻还是较重。可以通过一架天平来任意比较两组硬币,设计一个高效的算法来检测出这枚假币
2021-09-20 01:43:33 1KB n枚硬币 不知轻重
1
问题描述:在n枚外观相同的硬币中,有一枚是假币,并且已知假币较轻。通过一架来任意比较两组硬币,从而得知两组硬币的重量是否相同,或者哪一组更轻一些,假币问题要求设计一个高效的算法来检测出这枚假币。
2021-04-20 13:21:15 1KB MATLAB 假币问题 减治法
1
算法分析基础——Fibonacci序列问题 分治法在数值问题中的应用——最近点对问题 减治法在组合问题中的应用——8枚硬币问题 变治法在排序问题中的应用——堆排序问题 动态规划法在图问题中的应用——全源最短路径问题 3. 实验要求 (1)实现Floyd算法; (2)算法的输入可以手动输入,也可以自动生成; (3)算法不仅要输出从每个顶点到其他所有顶点之间的最短路径,还有输出最短路径的长度; (4)设计一个权重为负的图或有向图的例子,对于它,Floyd算法不能输出正确的结果 3. 实验要求 1)设计与实现堆排序算法; 2)待排序的数据可以手工输入(通常规模比较小,10个数据左右),用以检测程序的正确性;也可以计算机随机生成(通常规模比较大,1500-3000个数据左右),用以检验(用计数法)堆排序算法的时间效率 3. 实验要求 1)设计减治算法实现8枚硬币问题; 2)设计实验程序,考察用减治技术设计的算法是否高效; 3)扩展算法,使之能处理n枚硬币中有一枚假币的问题。 3. 实验要求 1)使用教材2.5节中介绍的迭代算法Fib(n),找出最大的n,使得 第n个Fibonacci数不超过计算机所能表示的最大整数,并给出具体的执行时间; 2)对于要求1),使用教材2.5节中介绍的递归算法F(n)进行计算,同样给出具体的执行时间,并同1)的执行时间进行比较; 3)对于输入同样的非负整数n,比较上述两种算法基本操作的执行次数; 4)对1)中的迭代算法进行改进,使得改进后的迭代算法其空间复杂度为Θ(1); 5)设计可供用户选择算法的交互式菜单(放在相应的主菜单下)
1