100层楼摔鸡蛋问题

C语言算法---小球放盒子问题 小球放盒子问题 文章目录小球放盒子问题问题描述输入说明输出说明输入范例输出范例算法思想参考代码 问题描述 将k个小球依次装入到若干个盒子中去(可以使用的盒子数不限)。 小球装入盒子的规则如下: 1)第一个盒子不能为空。 2)依次装入各个盒子的球数必须严格递增。例如:当k=8时,装入方法有1,2,5或1,3,4。 3)装入的盒子数尽可能多。 4)所有相邻盒子的球数之差的绝对值之和最小。 如上例中:装... 阅读详情

一种石头,在某一高度扔下就会碎,在这个高度以下不会碎,高度以上一定碎。现在有4个石头,1000层的楼房,需要测定这个石头破碎的高度。求最少多少次一定可以测出来。
 

分析:

这道题我们应反过来考虑,就是用a块石头扔b次至多一定可分辨层数X(a,b)。

先从最简装的一块石头考虑,很显然,
X(1,1) = 1
X(1,2) = 2
X(1,3) = 3
.
X(1,i) = i

再考虑二块石头,显而易见
X(2,1) = 1

对于X(2,2),我们可这样考虑,当我们扔第一次后,有两种可能:破和不破.

如果石头破了,则

1,我们还剩1块石头.
2,我们下一次只需检查下面的楼层.
3,我们还剩1次机会.
即我们还可分辨下面的 X(1,1) 层.

如果石头没破,则

1,我们还剩2块石头.
2,我们下一次只需检查上面的楼层.
3,我们还剩1次机会.
即我们还可分辨上面的 X(2,1) 层.

我们知道,X(1,1) = 1.所以我们第一次从第二层开始扔,如果石头破了,则再测试第一层.如果没破则再测试第三层.
所以用2块石头扔2次至多一定可分辨
1 + X(1,1) + X(2,1) = 1 + 1 + 1 = 3 层.

不失一般性,我们考虑
X(2,i)

对X(2,i),我们这样考虑,当我们扔第一次后,有两种可能:破和不破.

如果石头破了,则

1,我们还剩1块石头.
2,我们下一次只需检查下面的楼层.
3,我们还剩i-1次机会.
即我们还可分辨下面的 X(1,i-1) 层.

如果石头没破,则

1,我们还剩2块石头.
2,我们下一次只需检查上面的楼层.
3,我们还剩i-1次机会.
即我们还可分辨上面的 X(2,i-1) 层.

则
X(2,i) = 1 + X(1,i-1) + X(2,i-1)

接下来我们考虑
X(i1,i2)

同样,对 X(i1,i2),我们还是这样考虑,当我们扔第一次后,有两种可能:破和不破.

如果石头破了,则
1,我们还剩i1-1块石头.
2,我们下一次只需检查下面的楼层.
3,我们还剩i2-1次机会.

如果石头没破,则
1,我们还剩i1块石头.
2,我们下一次只需检查上面的楼层.
3,我们还剩i2-1次机会.

即
X(i1,i2) = 1 + X(i1-1,i2-1) + X(i1,i2-1)

很明显
无论你有几块石头,扔一次只能测试一层.

即
X(i,1) = 1.

 

这样,我们可制出如下表:

扔的次数: 1 2 3 04 05 06 007 008 009 010 011 012 013
分辨层数:
一块石头: 1 2 3 04 05 06 007 008 009 010 011 012 013
二块石头: 1 3 6 10 15 21 028 036 045 055 066 078 091
三块石头: 1 3 7 14 25 41 063 092 129 175 231 298 377
四块石头: 1 3 7 15 30 56 098 162 255 385 561 793 1092
五块石头: 1 3 7 15 31 62 119 218 381 637 1023
六块石头: 1 3 7 15 31 63 126 246 465 847 1485

也就是说用4块石头扔12次至多一定可分辨793层,扔13次至多一定可分辨1092层.

 

答案:

1000层的楼房,

用4块石头,扔13次一定可测试出来.


转载声明:本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/kittyjie/archive/2009/10/27/4732415.aspx

C++ ——趣味代码 三 题目: 现代工程师为了测试出:人从几楼掉下去(楼层为n层),就会摔死。然后现在给出两个试用品(代替人), 摔死之后的试用品将失效。 问题: 最少需要测试几次,才能得到摔碎鸡蛋的楼层?方案是什么?? 思路分析:   对于这个问题,如果从编程的角度而言,最简单的思路就是用动态规划的思路来解决。但是我们这次将是从数学角度对问题进行分析。    --------------------... 阅读详情

相关推荐

谷歌面试题之扔鸡蛋的问题(蓝桥杯摔手机的问题)

来自一个古老的公众号(摔手机就是根据扔鸡蛋过来的) 吐个槽先 正如昨天所说,这道题据说它最早见于谷歌的某次面试,由于题目表述容易,而解答相对麻烦,于是被很多人采用,广泛见于一些算法、规划的面试里。 要说清楚这个问题有点难度,有兴趣的小伙伴务必要静下心来仔细看。 首先我想说,该问题的情境构造是有缺陷的。因为在现实中,影响鸡蛋是否会破裂的最重要因素应该是地面的坚硬和平整程度,而不是鸡蛋下落的高度:把...

南 墙 1万+

100层楼有一个鸡蛋,如果确定刚好摔碎的那个楼层,最坏情况下最少需要摔多少次?

问题:一种石头,在某一高度扔下就会碎,在这个高度以下不会碎,高度以上一定碎。现在有4个石头,1000层的楼房,需要测定这个石头破碎的高度。求最少多少次一定可以测出来。 分析:这道题我们应反过来考虑,就是用a块石头扔b次至多一定可分辨层数X(a,b)。先从最简装的一块石头考虑,很显然,X(1,1) = 1X(1,2) = 2X(1,3) = 3.X(1,i) = i再考虑二块石头,显而易见X

Challenge Next Challenge 8432

R语言环境下Bibliometrix与Biblioshiny的安装与配置指南

本文提供了在R语言环境下安装与配置Bibliometrix和Biblioshiny的详细指南。内容涵盖R与RStudio的安装、Bibliometrix包的安装避坑方法,以及如何启动Biblioshiny图形界面进行文献计量分析。重点解决了安装过程中的常见网络与依赖问题,帮助科研人员快速搭建高效的文献分析环境。

jwt8token的博客 1145

N个鸡蛋从M楼层摔(2个鸡蛋从100层摔)

转载自: http://blog.youkuaiyun.com/wolinxuebin/article/details/47057707 http://www.cnblogs.com/yangai/p/5391533.html 一、题目:    有一栋楼共100层,一个鸡蛋从第N层及以上的楼层落下来会摔破, 在第N层以下的楼层落下不会摔破。给你2个鸡蛋,设计方案找出N,并且保证在最坏

sxs11的博客 2425

SDRAM控制器——添加读写FIFO

用FIFO实现数据缓存

H19981118的博客 2625

Unity热更实战:用YooAsset+HybridCLR实现小游戏资源与代码双更新(含避坑清单)

本文详细介绍了Unity小游戏开发中如何通过YooAsset与HybridCLR实现资源与代码双热更新方案。内容涵盖环境配置、架构设计、微信小游戏专项优化、热更代码工程化实践及真机调试技巧,帮助开发者解决审核周期长、紧急修复等痛点,提升更新效率与稳定性。

weixin_42520025的博客 501

待字闺中之鸡蛋挺住体

题目来源,待字闺中,原创@陈利人 ,欢迎大家继续关注微信公众账号“待字闺中” 两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事。有座100层的建筑,要你用这两个鸡蛋通过最少的次数确定哪一层是鸡蛋可以安全落下的最高位置。可以摔碎两个鸡蛋 方法分析 看到这个题目,最保险的方法就是一层一层试验,但这样只需要一个鸡蛋就可以了。我们现在有两个鸡蛋,完全可以用有更快

fangjian1204的专栏 1047

攻防世界 web高手进阶区 9分题 Web_python_flask_sql_injection

继续ctf的旅程,开始攻防世界web高手进阶区的9分题,本文是Web_python_flask_sql_injection的writeup

闵行小鱼塘 1472

【数据结构与算法】摔鸡蛋

摔鸡蛋问题 问题是 有两颗鸡蛋 在第n层不会碎 n+1层会碎 n就是临界楼层 现在需要给出一种找到临界楼层的方案 使得最坏情况下尝试次数最少 第一次看到这个题目 可能有点摸不着头脑 那我们可以从一种最最常规的方案入手 拿着鸡蛋从第一层逐层往上试 该方案肯定可以试出来 那么考虑最坏情况也就是试到100层 需要100次 该方案有两个问题 一个是最坏情况需要尝试次数太多 另一个是只用了一个鸡蛋 但是...

u010900754的专栏 766

【Unity】【2D】用连续图片生成动画Animation的简明步骤

本文介绍了Unity中使用2D连续图片制作2D动画Animation的简明步骤。

O青草O的博客 Unity和游戏制作知识分享 714

Origin教程004:Origin图形导出

需要编辑的话,双击图形,会自动用origin软件打开图形,这种方式是最开始导出图形的功能,方式一和二都是后面增加的。如果导出的图片边距较大的时候,会影响图片的美观,可以通过。也可以设置在PPT中直接编辑,找到。解决方法是,选择一条线,

WwLK123的博客 6327

动态规划之扔鸡蛋(或手机)问题

引入 有2个鸡蛋,从100层楼上往下扔,以此来测试鸡蛋的硬度。比如鸡蛋在第9层没有摔碎,在第10层摔碎了,那么鸡蛋不会摔碎的临界点就是9层。 问:如何用最少的尝试次数,测试出鸡蛋不会摔碎的临界点? 分析 注意:题目的一个隐含在该最少次数下,一定能测出。 完美解决这个问题的思路是先逆向假设存在一个最优解x,第一次就应该从x层开始扔。为什么要从第x层开始扔呢? 假设第一次扔在第x+1层...

li_il的博客 1252

QNX系统中的密码哈希格式——数据安全深度分析

综上所述,QNX系统中的Shadowed密码哈希格式提供了一种有效的数据安全机制,能够保护用户密码的安全性。通过将用户密码的哈希值存储在系统文件中,并结合哈希算法和盐值的使用,可以有效地防止明文密码泄露和密码破解。密码哈希是一种常用的安全技术,用于将用户密码转换为不可逆的哈希值,以保护用户的敏感信息。在QNX操作系统中,存在一种称为Shadowed密码哈希格式的机制,用于存储用户密码的安全散列值。当用户登录系统时,系统会将用户输入的密码与保存的哈希值进行比对,以验证密码的正确性。在上述代码中,首先使用。

UneDatabase的博客 251

摔蛋问题

问题1:100层楼有一个鸡蛋,如果确定刚好摔碎的那个楼层,最坏情况下最少需要摔多少次? 从1到100层依次摔,最坏要100次 问题2:如果有两个鸡蛋? 用分层的方法 我们要将100层楼分成多个区段 然后用第一个鸡蛋去确定区段 用第二个鸡蛋去确定区段中的位置 具体的做法是用按照14 13 12...1的楼层来摔 可以证明其是最优的 问题3:如果是3个鸡蛋? 继续用分层的方...

java的涟漪 152

YOLOv11 改进入门篇 | 轻量级涨点技巧:GhostConv 替代普通卷积的实战指南

摘要: 本文介绍如何通过GhostConv改进YOLOv11,实现轻量化涨点。YOLOv11深度增加导致参数量、延迟和内存占用上升,GhostConv通过“本征特征+线性变换”策略,在精度几乎无损的情况下降低30%-50%计算量。文章详细解析GhostConv原理,对比普通卷积的参数量和FLOPs优势,并提供完整的代码级改造流程,包括模块实现、注册及网络配置。实验表明,该方法有效提升边缘端推理效率,适用于移动端等资源受限场景。

shrgegrb的博客 1652

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

2个鸡蛋,100层楼问题

https://blog.youkuaiyun.com/Sirius_han/article/details/81152572 题目: 现有两个硬度相同的鸡蛋,以及一栋100层的楼,如果鸡蛋在第n层楼摔下去不会碎,在n-1层楼摔下去会碎,那么鸡蛋的硬度是n,如果要测出鸡蛋的硬度n,在最坏情况下最少要测试几次?每测试一次就把一个鸡蛋从x层楼扔下去;只有两个鸡蛋可用,鸡蛋摔碎了就不能用了; 题目分析: 1...

孔孔的博客 2901

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

100层楼扔两个鸡蛋的问题

100层楼扔两个鸡蛋的问题   (2014-06-25 16:31:35) 转载▼ 标签:  转载 分类: 软件工程 原文地址:100层楼扔两个鸡蛋的问题作者:魂之木 两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事。 有座100层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋

jfkidear的专栏 4882

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

2个鸡蛋,100层楼问题;

题目: 现有两个硬度相同的鸡蛋,以及一栋100层的楼,如果鸡蛋在第n层楼摔下去不会碎,在n-1层楼摔下去会碎,那么鸡蛋的硬度是n,如果要测出鸡蛋的硬度n,在最坏情况下最少要测试几次?每测试一次就把一个鸡蛋从x层楼扔下去;只有两个鸡蛋可用,鸡蛋摔碎了就不能用了; 题目分析: 1:二分???? 刚开始看到这个题脑子里最先蹦出来的就是二分;每次取一半,log(n)的算法,然后稍微深入分析一下就悲...

Sirius_han的博客 2093

100层楼扔2个鸡蛋、3个鸡蛋……

原题目 现有2个鸡蛋,楼高100层,假设从n层楼及以上扔下会摔碎,n层以下不会,那么怎样扔能以最小的次数得到n? 分析 最先想起来的是二分法的题目:100层最少需要扔多少次鸡蛋才能求得n?答案是ceil(log2(100))=7 。不过现在只有两个鸡蛋,这种方法就不行了。采用二分法的话,如果1号蛋在50层碎了,那剩下一个鸡蛋只能从1层开始慢慢扔了,需要扔1+49 = 50次。 另外一种容易

Focustc 2万+

100层楼,2个鸡蛋问题

转自:http://blog.sina.com.cn/s/blog_6c813dbd0101bh98.html 两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事。 有座100层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置。可以摔碎两个鸡蛋。 最少需要几次测试,才能得到摔碎鸡蛋的楼层?方案如何? ==========================...

KK1015的博客 2464

你还在用二分法求2个鸡蛋100层楼的问题吗?

题目 2个鸡蛋,100层楼,如何用最少的试验次数得到在鸡蛋落下不碎的最高层数?这一据说曾被谷歌纳入校园招聘题库的经典面试题,想必许多人都曾遇到过,又有多少人与我一样,不加思索就直接回答用二分法查找的? 但是,二分法真的是最优试验方法吗?接下来我们来分析几种解法。 首先我们先认真看一下完整的题目(之前做过这道题的同学可以跳过这一步): 原题:两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼扔下来就摔...

HanpengChen的博客 2029

“鸡蛋和100层楼”问题的深入思考

“鸡蛋和100层楼”问题想必大家耳熟能详,可有人想过怎么证明14是最少次数的么?怎么证明”间隔递减法“是最优的?如果三个鸡蛋情况又如何处理?

blueshadow2010的专栏 1973

100层楼扔鸡蛋,最快速度找出,哪层是鸡蛋碎的临界点

  假如有100层楼,总共有2个鸡蛋。需要多少次才能试探出临界点,比如,在第三层扔下去,不碎;在第四层扔下去,碎了,那第三层和第四层就是临界点。   如果之前没准备过的话,大概第一个想到的就是二分法。 1. 二分法   首先在第50层丢第一个鸡蛋,若鸡蛋碎了,则在第一层开始往上丢鸡蛋,最坏情况是试探49+1次,为什么要从第一层开始尝试呢,因为只有2个鸡蛋;若鸡蛋没碎,则在75层丢第二次,若碎了...

helloxiaozhe的博客 5193

100层楼2个鸡蛋

问题: 有两个一样的特殊鸡蛋,它们有可能在1楼就摔碎了,也有可能从100楼摔下都没碎。现在有100层楼,要你用这两个鸡蛋通过最少的次数确定哪一层是鸡蛋可以安全落下的最高位置。 思路1: 很多人看到这个问题,最先想到的可能是二分法:第一个鸡蛋在50层扔碎了,那第二个鸡蛋在25层扔,没碎再在37层扔,碎了则在13层扔……。这样问题完全变为二分查找,但要求鸡蛋足够多,现在只

luzheng的专栏 1223
上一篇: KMP代码及思路解析
下一篇: 动态规划入门详解
windroid
博客等级 码龄12年 28粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值