两个鸡蛋100层楼(DP)
#include <iostream>
using namespace std;#define N 500
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)int dp[2][N]; /* dp[i][j] 表示用i个鸡蛋测试第 j 层楼所需要的最小步数 */void count ( int n )
{int i, j;
/* dp[1][i] = i 已经是最优解,是准确值。而dp[2][i] = i只是用最差解预处理 */for ( i = 0; i <= n; i++ ) dp[1][i] = dp[2][i] = i;/* 对于每个楼层i,可以从[1,i-1]层中任选一层抛j第一个鸡蛋:鸡蛋可能破了,那么必须挨个尝试[1,j-1],即dp[1][j-1],鸡蛋可能没破,那么处理[j+1,i],即dp[2][i-j]。每次抛都考虑最坏情况,即max(dp[1][j-1],dp[2][i-j])。枚举所有[1,i-1]的楼层,取最优解 */for ( i = 1; i <= n; i++ )for ( j = 1; j < i; j++ )dp[2][i] = min ( dp[2][i], 1 + max(dp[1][j-1], dp[2][i-j]) );
}int main()
{count(200);int n;while ( scanf("%d",&n) != EOF ){for ( int i = 1; i <= n; i++ )printf("%d %d\n",i,dp[2][i]);}return 0;
}
两个鸡蛋100层楼(DP)相关推荐
- 2个鸡蛋100层楼/2个玻璃珠39层楼
题目描述: 你拿着两个鸡蛋站在100层的大楼上.鸡蛋或许结实到从楼定掉下也不会摔碎,或许很易碎.最少试验多少次可以找出鸡蛋被摔碎的最低楼层? 腾讯2017笔试题也有类似的题目,描述是针对2个玻璃珠和3 ...
- 你还在用二分法求2个鸡蛋100层楼的问题吗?
题目 2个鸡蛋,100层楼,如何用最少的试验次数得到在鸡蛋落下不碎的最高层数?这一据说曾被谷歌纳入校园招聘题库的经典面试题,想必许多人都曾遇到过,又有多少人与我一样,不加思索就直接回答用二分法查找的? ...
- 2个鸡蛋100层楼--动态规划
原题:两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事.有座100层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置.可以摔碎两个鸡蛋.在最坏的情况下最 ...
- 面试题目:2个鸡蛋100层楼问题
一道非常经典的面试题目,给你两个鸡蛋,在一幢100层的大楼里面,至少扔几次可以测出让鸡蛋破碎的临界高度? 最朴素的做法是从100层一直扔到1层,不过这样明显不是最优的.这题目其实可以转化为dp求解,假 ...
- 两个软硬程度一样的鸡蛋,它们在某一层摔下会碎,有个100层的建筑,要求最多用两个鸡蛋确 定鸡蛋安全下落的临界位置,给出临界位置?如果是n层楼,m个鸡蛋,请给出确定临界位置的算法
题目:问题:一幢大楼共计100层,某种类型的鸡蛋从某一楼层及其以上楼层摔下来时会被打破,从该层楼(即临界楼层)以下楼层摔下该鸡蛋,鸡蛋不会出现破损.现给你2个完全一样的该种类型的鸡蛋,问:如何通过这2 ...
- 关于100层楼,扔两个鸡蛋,求摔碎鸡蛋的临界层的问题
题目描述: 两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事.有座100层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置.可以摔碎两个鸡蛋. 网上有人 ...
- C语言丢鸡蛋100层,关于100层楼,扔两个鸡蛋,求摔碎鸡蛋的临界层的问题
题目描述: 两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事.有座100层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置.可以摔碎两个鸡蛋. 网上有人 ...
- 两个鸡蛋测试:从100层楼往下扔鸡蛋,求最坏情况下确认保证鸡蛋可以不破的最大楼层所需次数
最坏情况下求得最优解所需的次数 内容说明 本文是在看过<<妙解谷歌压箱底面试题:如何正确的从楼上抛鸡蛋>>一文以后做的总结,该文章对此问题描写的很详细,但是在拜读的过程中也花了 ...
- 2个鸡蛋,100层楼问题;
题目: 现有两个硬度相同的鸡蛋,以及一栋100层的楼,如果鸡蛋在第n层楼摔下去不会碎,在n-1层楼摔下去会碎,那么鸡蛋的硬度是n,如果要测出鸡蛋的硬度n,在最坏情况下最少要测试几次?每测试一次就把一个 ...
最新文章
- poj 1185(状压dp)
- 近期活动盘点:智进未来:AI在医疗健康领域的应用、挑战及发展趋势
- dropout层_深度学习两大基础Tricks:Dropout和BN详解
- Selenium Web 自动化 - 项目实战(三)
- 未來用工新趨勢_浅谈2019年灵活用工五大新趋势
- mysql 创建表_每天10分钟带你学会MySQL(三)表的创建
- 没项目经验难就业?推荐你参加“大学生就业特训营” | 100 个免费名额,先到先得!...
- 23. Navigator javaEnabled() 方法
- MacOS Monterey 12.3 (21E30) OC 0.7.9 / Cl 5145 / PE 三分区原版黑苹果镜像
- 酒店预定系统—需求规格说明书
- 怎么用php跨域请求
- uniapp 微信小程序的弹框文字换行
- 实用分享-MAC修改器(摆脱网络封锁的困扰)
- android笑脸切图,朋友圈小符号表情怎么弄?朋友圈文案小符号表情大全
- 100 句世界哲学语录【句句珠玑细细品味】
- CI框架使用PHPExcel生成快递面单
- 关于u8的三种备份方式
- thymeleaf模板获取markdown数据后,渲染到页面上(showdown.js)
- 人工智能基础之美女和野人过河问题
- 证伪主义 | A Little Sight of Falsification