称3次,找出坏鸡蛋

有十二个鸡蛋,其中有一个是坏的(重量与其余鸡蛋不同),现要求用天平称三次,称出坏的那个鸡蛋

准备工作:将十二个鸡蛋编号,1、2、3......11、12。分为三组,1、2、3、4为第一组,5、6、7、8为第二组,9、10、11、12为第三组。其中,Time = ?表示这是第?次称。

分析:取第一组、第二组,分别放置在天平两端,两种情况:平衡,不平衡(Time = 1)

  ♦ if (平衡):这8个鸡蛋都是好的,取3个(1、2、3)出来,和剩下4个中的任意3个(假设是9、10、11),将这两组分别放在天平两端,两种情况:平衡,不平衡(Time = 2)

        if(平衡):1-11鸡蛋都是好的,鸡蛋12是坏的(只称了两次,找出了坏鸡蛋),任选一个好鸡蛋,和鸡蛋12放在天平两端(找出坏鸡蛋是轻还是重)(Time = 3)

        else(不平衡):9、10、11的三个鸡蛋中有一个是坏的,鸡蛋12是好的(并且知道坏鸡蛋是轻还是重)。任取两个鸡蛋(9、10),放在天平两端,两种情况:平衡,不平衡(TIme = 3)

                if(平衡):鸡蛋11是坏的

                else(不平衡):根据轻重得出9、10两个鸡蛋中哪个是坏鸡蛋

  ♦ else(不平衡):第三组鸡蛋9、10、11、12是好的。第一组和第二组的鸡蛋一定是一组轻,而另一组重(假设第一组重<1、2、3、4>)。从第三组鸡蛋重任取3个(9、10、11),将4、5、6、7作为第一组,8、9、10、11作为第二组分别放在天平两端,则有三种情况:第一组重或第二组重(不平衡),一样重(平衡)(Time = 2),分别如下:

  A、第一组重,因为9、10、11是好鸡蛋,而5、6、7不管是放左边还是右边,对哪边重并未影响,所以有问题的在4、8之间,取鸡蛋12和4、8中的任一鸡蛋比较轻重(Time = 3),从而找出有问题的鸡蛋

  B、第二组重,则问题出在5、6、7鸡蛋上,且知道坏鸡蛋比好鸡蛋轻,任取两个鸡蛋(5、6)放天平两端称,不平衡(Time = 3),则轻的为坏鸡蛋;否则7为坏鸡蛋

  C、一样重,则问题在1、2、3鸡蛋上,且可以知道坏鸡蛋比较重,任取两个(1、2)放在天平两端(Time = 3),不平衡,则重的为坏鸡蛋;否则3为坏鸡蛋

    

原文地址:https://www.cnblogs.com/xiaolongren/p/12494897.html

时间: 2024-10-27 11:57:12

称3次,找出坏鸡蛋的相关文章

后端系统性能优化(第一季 2 找出坏代码)

昨天开了个头 博文链接:后端系统性能优化(第一季:改掉那些坏代码) 今天,来说说 什么样的代码才是坏代码,怎么来找出这些坏代码. 不少猿在吐槽烂代码.但是我们今天说的不是烂代码,坏代码只需要改动很小的一部分,把它的坏的地方改掉,他依然是好代码 .而烂代码,只有重新写过了,才会让你觉得浑身轻松,压力瞬间释放,而且在写之前你还得花90%的时间去看懂它.所以我说改掉坏代码,因为只有坏代码才能改,而烂代码是用来看.我很庆幸我在的这个团队的代码驾驭能力都还不错,很少有烂代码.但为什么还会有坏代码?坏代码不

小球称重问题~通过三次称重找出十二个小球质量不一样的小球,并判断小球轻重

小球称重问题 一.问题描述 十二个小球进行称重,只能称三次,找出不一样的小球,并判断异球的轻重. 二.问题分析 将12个小球分成三组,将小球分别标号为1到12,分组情况如下: A组小球:1,2,3,4: B组小球:5,6,7,8: C组小球:9,10,11,12 情况分析:每个小球都有两种可能,一共会有24种判断结果. 三.算法分析 第一次,先将1-4号放在左边,5-8号放在右边. 1.如果右重则坏球在1-8号. 第二次将2-4号拿掉,将6-8号从右边移到左边,把9-11号放 在右边.就是说,把

编写一个程序找出100~999之间所有的水仙花数

如果一个3位数等于其各位的立方和,称该数为水仙花数. 如,所以407是一个水仙花数,编写一个程序找出100~999之间所有的水仙花数. 1 #include<stdio.h> 2 #include<stdlib.h> 3 //判断水仙花数,是则返回1 4 int isNarcissus(int n); 5 6 int main() 7 { 8 int i; 9 for(i = 100; i < 1000; i++) 10 if(isNarcissus(i)) 11 print

水贴王之续,找出数组里出现频率最高的元素

找出数组里出现频率最高的元素 个人信息:就读于燕大本科软件工程专业 目前大三; 本人博客:google搜索"cqs_2012"即可; 个人爱好:酷爱数据结构和算法,希望将来从事算法工作为人民作出自己的贡献; 博客内容:水贴王问题之续 博客时间:2014-5-12; 编程语言:Java ; 编程坏境:Windows 7 专业版 x64; 编程工具:jdk,eclipse x64; 制图工具:office 2007 powerpoint; 硬件信息:7G-3 笔记本; 真言: 痛苦的活着比

shell在一个大文件找出想要的一段字符串操作技巧

昨天端午,晚上的时候接了一个电话,我朋友的公司,数据库被两个工作没多久的phper给弄坏了,具体就是把一个字段值,给全表弄成一个了名字了,当然这个是可以配置了禁止全表更新数据库,这下可急坏了,找到我,叫我给看一下,他们每天3:00是有备份的,按天备份,还好不是增量的,当然binlog日志也是开启的,我看了一下他们的备份文件是 [[email protected] ~]# ls -lha /www/datebak/2016-06-09.sql -rw-r--r-- 1 root root 4.9G

爱加密帮你迅速找出Android安全漏洞!!

据专业安卓研究人员称,由于Android系统存在多处安全漏洞,Android 安全漏洞防护问题让人担忧,一些黑客开发一些看似很安全的应用潜伏在系统中.一旦用户对Android系统进行升级,这些应用就会露出"狰狞"面目.报告称,这些应用可以未经用户允许就在升级过程中获得一些至关重要的能力,如自动获取新版本系统中所引入的所有新的权限,用恶意应用取代系统级应用,将恶意脚本植入任意网页中等等. 也许你不禁要问,Android系统为什么容易被篡改并植入恶意代码,变成手机病毒呢?原因在于Andro

爱加密告诉你如何迅速找出App安全漏洞!!

据专业安卓研究人员称,由于Android系统存在多处安全漏洞,Android 安全漏洞防护问题让人担忧,一些黑客开发一些看似很安全的应用潜伏在系统中.一旦用户对Android系统进行升级,这些应用就会露出"狰狞"面目.报告称,这些应用可以未经用户允许就在升级过程中获得一些至关重要的能力,如自动获取新版本系统中所引入的所有新的权限,用恶意应用取代系统级应用,将恶意脚本植入任意网页中等等.http://www.ijiami.cn/ 也许你不禁要问,Android系统为什么容易被篡改并植入恶

10个小球用天平找出重量不同的那个

上周被人出了一道算法题目,题目的内容是:有10个小球,外观一样,其中1个小球和其他9个小球重量不一样,请使用天平以最少的次数找出这个重量不一样的小球. 解题思路:其实这是一个很典型使用分治算法的例子,由于不知道这个特别的小球是比其他球重还是轻,所以我们不能简单的使用二分法去求解,所以我选择3为模. 解题步骤: 1.将10个球分成4个数组,分别是A[a1, a2, a3],B[b1, b2, b3], C[c1, c2, c3], D[d1]:假设这个重量不一样的球为n,其他普通球的任意一个是m:

java程序性能优化之找出内存溢出元凶

我曾经在刚入行的时候做过一个小的swing程序,用到了java SE,swing,Thread等东东,当初经验少也没有做过严格的性能测试,布到生产环境用了一段时间后发现那个小程序有时候会抛java.lang.OutOfMemoryError异常,就是java的内存溢出.当时也上网查了不少资料,试过一些办法,代码也稍微做了些优化,但是有一个问题我始终是找不到解决的方案 - 不知为什么子窗体关闭后java的垃圾回收机制无法回收其资源,因为这个程序可能要经常开关一些子窗体,那么这些子窗体关闭后无法释放