Leetcode 1884. 鸡蛋掉落-两枚鸡蛋 (经典动态规划数学题)

 

如果只有一个鸡蛋,要确定N层楼,只能从第一层确定到第N层。

 

对于两个鸡蛋,可以先用第一个鸡蛋,确定一个大致范围,如果第一个鸡蛋碎了,第二个鸡蛋要从第一个鸡蛋没碎的层,试到第一个鸡蛋碎了的层。

比如100层

 

第一个鸡蛋分别从10层,20层,30层,。。。扔到100层

如果10层碎了, 1 + 9 = 10

如果20层碎了, 2 + 9 = 11

如果100层碎了, 10 + 9 = 19次

因此这样最坏情况需要19次

 

如果x层碎了, 1 + x - 1 = x

x + x - 1层碎了,  2 + x - 2 = x

如果x + x - 1 + (x - 2)层碎了

 

用动态规划的思想解决这个问题,f[i][j] 表示j个鸡蛋,确定i层楼的最小操作次数,显然f[i][1] = i

f[i][2], 我们首先任意选取一层k,假如蛋碎了,那么只有一个蛋,还需要f[k-1][1]次,即k-1次才可以确定,如果蛋没碎,那么最少还需要f[i-k][2]。最怀情况下取max

class Solu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值