算法 - 扔鸡蛋问题

该博客讨论了如何使用动态规划策略解决经典的扔鸡蛋问题,以确定在一定数量的球和不同楼层中找到使鸡蛋破裂的最低楼层,从而最小化试验次数。文章提供了输入输出示例,并引用了相关资源进行深入探讨。
摘要由CSDN通过智能技术生成

算法第三次上机C题

问题描述

“假设有两个相同的玻璃球,你想确定100层楼中最低楼层,当它们从这层楼掉下来的时候会摔碎。假设球在这一层以下掉落时没有损坏。什么策略可以最大限度地减少试验的跌落次数?”

假设我们只有一个球。我们必须从每一层按顺序从1降到100,最坏的情况下需要100次。

现在想想我们有两个球的情况。假设我们把第一个球从n层掉下来。如果它坏了,我们就剩下一个球了,我们需要从1层按顺序掉到n-1层,最坏的情况下会有n个次掉落(第一个球掉一次,第二个最多掉n-1次)。但是,如果从n层掉落时它没有破裂,我们将问题减少到从n+1层掉落到100层。无论哪种情况,我们都已经试验过一次。所以在最坏的情况下,最小试验数是n的最小值。

您将编写一个程序来确定所需在最坏的情况下的最小试验次数,给定B个球和一个M层建筑。

输入

输入的第一行包含一个整数P(1≤P≤1000),这是后面的数据集数。
每个数据集由包含三(3)个十进制整数值的单行组成:问题编号,后跟空格,后跟球数B(1≤B≤50),后跟空格和建筑物层数M(1≤M≤1000)。

输出

对于每个数据集,使用以下值生成一行输出:
数据集编号(十进制整数)、空格和对应值B和M所需的最小试验数。

样本输入
4
1 2 10
2 2 100
3 2 300
4 25 900

样本输出
1 4
2 14
3 24
4 10

参考文章

https://blog.csdn.net/joylnwang/article/details/6769160
https://www.jianshu.com/p/50103a152617

code
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cstdio>
#include <vector>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值