分治法:找出不合格银币

n枚硬币中找到问题硬币 记录自己遇到的有趣的面试算法题X个硬币,其中有一枚劣质硬币(较轻或者较重未知),现在你有一个天平,请用最少的次数找出劣质硬币!这个问题如果没有最少次数限制非常简单,但是要求最少,就不一样了功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注... 阅读详情

N块银币中有一块不合格,已知不合格的银币比正常银币重,现用一天平。请利用它找不和格的银币,并且用天平的次数最少。

#include<stdio.h>
#define N 100

int search(int *a,int left,int right);
int sum_buf(int *a,int left,int right);

int main(void)
{
    int a[N];
    int i;
    int s;
    for(i=0;i<N;i++)
        a[i]=1;
    a[24]=2;//编号为24的物品不合格 假设物品从0开始编号
    s=search(a,0,N-1);
    printf("不合格品的编号为:%d\n",s);
    return 0;
}

//计算数组中所有元素之和
int sum_buf(int *a,int left,int right)
{
    int i;
    int sum=0;
    for(i=left;i<=right;i++)
        sum+=a[i];
    return sum;
}

//折半查找法 找出数组中最大的元素
int search(int *a,int left,int right)
{
    int mid=(left+right)/2;
    if(left==right-1)
    {
        if(a[left]<a[right])
            return right;
        else
            return left;
    }
    if((right-left)%2==0)//数组中元素为奇数
    {
        if(sum_buf(a,left,mid-1)>sum_buf(a,mid+1,right))
            return search(a,left,mid-1);
        else
            if(sum_buf(a,left,mid-1)<sum_buf(a,mid+1,right))
                return search(a,mid+1,right);
            else
                return mid;
    }
    else//数组中元素为偶数
        if(sum_buf(a,left,mid)>sum_buf(a,mid+1,right))
            return search(a,left,mid);
        else
            return search(a,mid+1,right);
}


实验银币问题 问题描述与实验目的: 在n个银币中有一个是不合格的,不合格的银币比合格银币要轻。 现用天平秤银币,找出不合格的银币,且在最坏情况下秤银币的次数最少。 输入 输入有若干行。每行上有一个整数n,表示银币个数,n<100000。 当n=0,表示输入结束。 输出 对输入大于0的整数n,输出2行。第1行输出n的值,第2行上先输出“Times:”,接着输出在最坏情况下秤n个银币的最少次数。 当n=0时,这种情况你不必处理和结果输出。 立即下载

相关推荐

n枚硬币中假币问题

在n枚外观相同的硬币中,有一枚是假币,并且已知假币与真币的重量不同,但不知道假币与真币相比较轻还是较重。可以通过一架天平来任意比较两组硬币,设计一个高效的算法来检测出这枚假币

银币次品求解

有N块银币,其中的一块比其他的重,求这块银币最少的称量方法

weixin_43911526的博客 2794

GIS国土工具实战:从地类分析到坐标转换,一站式解决项目难题

本文详细介绍了GIS国土工具在国土整治项目中的高效应用,涵盖地类分析、坐标转换、影像加载等核心功能。通过实战案例展示如何利用该工具快速处理shp与txt文件转换、智能比对三调二调数据,以及优化影像加载策略,显著提升项目效率。特别适合需要处理复杂国土数据的专业人员使用。

weixin_28732953的博客 334

银币次品求解问题---二分法和三分法比较(python代码)

N块银币中有一块不合格,已知不合格的银币比正常银币重。现有一台天平,请利用它找出不合格的银币,并且要求使用天平的次数最少。

LiBai__的博客 485

别再买错磁铁了!手把手教你为TLE5012B/AS5047等磁编码器选配和安装径向充磁磁铁

本文详细解析了为TLE5012B/AS5047等磁编码器选配和安装径向充磁磁铁的关键要点。从充磁方向的物理本质到供应商沟通技巧,再到安装工艺的黄金法则,帮助工程师避免常见错误,确保磁编码器稳定工作。特别强调了径向充磁的重要性及验证方法,并提供了尺寸选择、温度特性和抗干扰设计的实用建议。

weixin_26750481的博客 314

手把手教你用ADS优化肖特基二极管检波电路(附RC参数避坑指南)

本文详细介绍了如何使用ADS软件优化肖特基二极管检波电路,包括RC参数设置、常见失真问题分析与解决方案。通过实战案例和参数优化技巧,帮助射频工程师避免设计陷阱,提升电路性能。特别附有RC参数避坑指南,适用于调幅解调、功率检测等应用场景。

m2n3o4p5的博客 194

练习28

  /***********************************************************************************  28. n枚银币 C1,C2,...,Cn, 其中有一块不合格,不合格的银币比正常的要重。现用 一天平找出不合格的一块,要求在最坏的情况下,用的天平次数最少。  分析:每次称量都将银币平均分成

thmfire的专栏 752

Nexus7二代刷机教程(新手向)

该教程将使用lineageos(Android 11),同时借鉴了lineage官方的教程和songelf的教程。

2403_84391487的博客 5207

寻找假银币

寻找假银币是一个非常有趣的智力题目,寻找假银币的大意如下:   现在有8枚银币,其中一枚是假币。但是,从外观和做工上无法分辨哪枚是真币哪枚是假币,只知道假币的重量要比真币稍轻。则要求仅用一个天平,如何以最少的步骤寻找到假银币? 1. 寻找假银币算法 可以采用递归分治的思想来求解这个问题,操作步骤如下: (1)首先为每个银币编号,然后可以将所有的银币等分为两份,放在天平的两边。 (2)因为...

weixin_33672109的博客 348

手把手教你用OpenCore在Dell Optiplex 3060上安装黑苹果(含ALC255声卡修复)

本文提供了一份详尽的指南,教你如何在Dell Optiplex 3060微型台式机上安装黑苹果系统。文章重点解决了使用OpenCore引导时的核心配置,特别是针对Intel UHD 630核显的驱动优化和Realtek ALC255声卡的修复方案,旨在帮助用户打造一个稳定可用的macOS工作站。

weixin_29275257的博客 786

OpenCompass实战:从零部署大模型评测平台,量化模型能力选型

在大模型技术选型与评估中,客观、可量化的评测体系是工程实践的关键。其核心原理在于通过标准化的数据集、统一的评测方法与自动化流程,将主观的模型体验转化为可比较的指标数据。这种评测框架的技术价值在于解决了模型能力评估的模糊性问题,为开发者提供了模型选型、效果对比与迭代优化的科学依据。典型的应用场景包括对比不同开源模型在代码生成、逻辑推理等特定任务上的性能,或是评估微调后模型在业务数据集上的提升效果。OpenCompass作为开源的大模型全能力评测平台,正是这一理念的工程化实现。它通过模块化的四层流水线架构和配置

weixin_28725037的博客 626

分治法-找假币问题

一、分治法 将一个复杂的问题分为规模较小的问题,计算简单的小问题求解,然后综合小问题,得到最终的答案。 基本思路 对于一个规模为N的问题,若该问题可以很容易的解决,则直接解决,否则执行下面操纵 将该问题分解成M个规模较小的问题,这些子问题互相独立,并且与原问题形式相同 地柜的求解子问题 然后将各个问题的解合并到原问题的解 二、假币问题 假币问题:有n枚硬币,其中有一枚是假币,己知假币的重量较轻。现只有一个天平,要求用尽量少的比较次数找出这枚假币。 分析 首先为每个币编号,然后将所有的币等分为两份,放在

lss0555的博客 6536

1.3、云计算HCIP融合存储产品及部署

目标:描述Oceanstor V3系列存储产品系统组成及产品定位 描述Oceanstor V3硬件结构及软件架构 掌握存储系统与主机系统之间的连接 一、存储型号 低端型存储:Oceanstor 2200 2600 2800 V3/V5 终端型存储:Oceanstor 5300 5500 5600 5800 6800 V3/V5 高端型存储:Oceanstor 18000 二、Oceanstor V3系列存储系统定位 OceanStor V3系列存储系统是华为根据存储产品应用现状和存储

weixin_43666279的博客 1652

分治法解决硬币问题(二分法/三分法)(C++实现)

在n(n≥3)枚硬币中混有一枚不合格硬币(重量过轻或过重未知),如果只有一架天平可以用来称重且称重硬币数量没有限制,设计一个算法找出这枚不合格硬币,使得称重次数最少。 二分法: 将这n个硬币分成两等份,然后放到天平的两端,则假币在较轻的那一端; 然后将较轻的那一端的硬币再分成2等份,然后再放到天平的两端进行比较,假币还是在较轻的那一段; 直到最后只剩下两个硬币了,分别放到天平的两端,轻的哪一个就是...

cqq9869454的博客 5149

把 SNC 支持的通信链路一次讲透,SAP GUI、RFC、CPIC、SAProuter 到底谁在保护谁

摘要: SNC(Secure Network Communications)是SAP系统中用于保护特定通信链路的安全机制,主要应用于DIAG、RFC、CPIC等SAP协议,而非HTTP等互联网协议(后者由SSL/TLS处理)。其核心在于保护通信端点之间的逻辑链路,需在发起方和接收方同时配置SNC参数,包括SNC名称、保护等级(QoP)等。实际项目中,SNC的配置涉及多个层面,如SAP GUI到ABAP平台的登录链路、外部程序通过RFC/CPIC连接ABAP的认证、ABAP系统间的跨系统通信等。配置不当可能导

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 250

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

n枚硬币找出假币问题(包含一枚假币)

问题描述: 在n枚外观相同的硬币中,有一枚是假币,并且已知假币与真币的重量不同,但不知道假币与真币相比较轻还是较重。可以通过一架天平来任意比较两组硬币,设计一个高效的算法来检测这枚假币(以下提供两种方法)。 解题思路1(本例为真币重量大于假币): 使用减治法的解题思路,将硬币分为3堆,则每堆的硬币数量为 n/3 ,但是这是在 n%3==0 的情况下才能成立,所以我们将 n 枚硬币分为

wjyboomshakalaka的博客 2万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

N枚硬币问题

问题定义:已知N枚硬币质量,其中有一枚假币(或轻或重),请找出假币 思路: 若N&lt;3,无法判断 若范围缩小至一枚硬币,拿一枚真币比较轻重 若范围缩小至两枚硬币,拿一枚真币与其中一枚比较轻重,缩小范围至一枚硬币 若范围在三枚以上,将硬币三分,左边num/3枚,右边num/3枚,其余放中间(num为范围大小)。             4.1若左边硬币质量等于右边,缩小范围到中间  ...

arthu6的博客 2127

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

n枚硬币问题(找假币)

问题描述: 在n枚外观相同的硬币中,有一枚是假币,并且已知假币与真币的重量不同,但不知道假币与真币相比较轻还是较重。可以通过一架天平来任意比较两组硬币,设计一个高效的算法来检测这枚假币。 解题思路:     使用减治法的解题思路,将硬币分为3堆,则每堆的硬币数量为 n/3 ,但是这是在 n%3==0 的情况下才能成立,所以我们将 n 枚硬币分为 3 堆加 1 堆 余数堆(余数堆可能...

diaolin4794的博客 3693

不合格的程序

最近维护前同事的一个小程序。该程序于2014年年底便完成了编码工作,并在2015年在实际环境部署过程中维护了差不多半年。 我作为该项目直接管理人,并没有详细了解这子项目内部的东西。而2015年的维护基本是该同事一个人陪着用户在修改,我也没有管详细的过程。只记录了下程序存在的比较严重的BUG。 该同事今年初离职。离职前,我问之前那些BUG修改得如何。他说所有BUG都已经修改完,没有新BUG了。由

pcd的博客 665

分治算法思想解决找假硬币的问题

概念 分治算法的基本思想是将一个大的复杂的问题分解成多个小的、容易解决的问题,通过解决这些小问题进而解决这个大问题。 使用分治算法需要待求解问题能够简化为若干个小规模的相同的问题,通过逐步划分,达到一个易于求解的阶段,而直接进行求解,在程序中可以使用递归方法来进行求解。 哈哈,说起来很抽象,举个例子就好理解了。 一个袋子里有n个硬币,其中一枚是假币,并且假币和真币一模一样,...

weixin_34233618的博客 1621

从函数的零点问题到二分法的应用

数学是科学的皇冠,这句话一点也不假,在程序的算法应用上也是这样的。 众所周知,当数据量很大的时候,采用二分法是非常高效的(使用二分法查找的前提是数据是排好序的,这里不作讨论)。二分法查找的原理来自于数学上的函数的零点问题,也就是求函数的近似值(近似解)。 引用我们的高中数学教材的必修一里面的内容:求f(x)的近似解,通过试验知函数f(x)在区间(a,b)上存在零点。如何找出这个零点?一个

liyangbinbin的博客 1774

称金币问题: 有27枚金币,其中一个是假的。假的比真的略轻。现在有一个天平,问最少几次可以找出假币?

称金币问题: 有27枚金币,其中一个是假的。假的比真的略轻。现在有一个天平,问最少几次可以找出假币?

Yzwer的博客 1万+

分治算法寻找假银币问题(六)

【算法思想】 【示例】 【算法分析】 【源代码】 //只能有一个假银币 #include #include #define MAXNUM 30 int FalseCoin(int coin[],int low,int high) { int i, sum1, sum2, sum3; int re; sum1 = sum2 = sum3 = 0;

GodLei1995 1398
上一篇: 动态规划法:机器分配最佳盈利
下一篇: 将SpringMVC maven项目部署到tomcat后无法启动tomat问题
雙安
博客等级 码龄10年 80粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值