抑郁症健康,内容丰富有趣,生活中的好帮手!
抑郁症健康 > 面试高频智力题 100层楼两个鸡蛋找出临界点的最多次数 (直接分析法 非动态规划思路)

面试高频智力题 100层楼两个鸡蛋找出临界点的最多次数 (直接分析法 非动态规划思路)

时间:2024-03-15 20:27:03

相关推荐

有一栋楼共100层,一个鸡蛋从第N层及以上的楼层落下来会摔破, 在第N层以下的楼层落下不会摔破。给你2个鸡蛋,设计方案找出N,并且保证在最坏情况下, 最小化鸡蛋下落的次数。(假设每次摔落时,如果没有摔碎,则不会给鸡蛋带来损耗)

很容易陷入一个误区,就是用二分法,但要注意,鸡蛋个数是有限的,只有两个,所以二分是不对的。只有当蛋的个数是无限个的时候,才能二分。此时最小次数就是7次

如果只有一个鸡蛋,那么只能一层一层的尝试,就需要仍100次

如果两个鸡蛋,一个拍脑袋的想法就是,第一个鸡蛋在10,20,30,100层仍,第二个鸡蛋最坏扔9次。

最坏情况下19次确定

这样由一个问题,每次往后,第二个鸡蛋都是扔9次,第一个鸡蛋的次数在逐渐增大,能不能改进,第一个鸡蛋,每次不是固定间隔仍,而是少一个,这样能保住,第一次和第二次总和不变:

n+n-1+... + 1 >= 100

14 27, 39, 50, 60, 69, 78, 85, 92, 99, 100

这样的最坏的次数是14次

动态规划思路:

dp(T,N)表示T层楼,N个鸡蛋最多仍的次数。

假设仍一个鸡蛋到k层,如果这个鸡蛋不碎,那么剩下确定的个数,就等价于dp(T-k,N-1), 如果鸡蛋不碎,就等价于dp(k-1,N-1), 由于我们可以控制第一个鸡蛋的选取,所以最后的转移方程是

dp(T,N) = min_k (max(dp[T-k,N-1) + dp(k-1,N-1)) + 1;

代码实现,Leetcode 887题,暂略

如果觉得《面试高频智力题 100层楼两个鸡蛋找出临界点的最多次数 (直接分析法 非动态规划思路)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。