肺炎疫情期间,在B站上看了李永乐老师关于双蛋问题的视频,刚好我最近写了一篇关于动态规划的文章,这里我们试着使用动态规划的思想简单分析下这个问题。
一、问题描述
有一座100层的楼,有一个鸡蛋,在低楼层的时候将鸡蛋扔下不会碎,但是高楼层扔下会碎。存在一个临界楼层从该楼层之上抛下来,鸡蛋一定会碎。现在有N个鸡蛋可以做检查(鸡蛋没碎可以重复使用,但是碎了就不能使用了),问最少几次(M)能够找到这个临界楼层。
二、尝试
1)假设N=1,为了确保鸡蛋不会碎,只能从第一层开始往上扔,直到鸡蛋碎了为止,最差M=100
2)假设鸡蛋有无限多,可以使用二分法来解决这个问题,即在第50层往下扔,如果鸡蛋碎了就在25层继续扔,如果没碎的话,在75层往下扔。依次类推,直到找到为止。2^M>=100,m约等于6.64
如果N=2的情况下,最好需要多少次才能试出M?
1)假设第一个鸡蛋每隔十层扔一次,10、20、30。。。100,等鸡蛋碎着之后从再从区间内开始尝试,如果在第100层碎了的话就是91-99,这样就可以试出临界楼层了。
临界楼层出现在100层碎掉的话最坏的情况就是先扔10次(100/10=10)然后在91、92、93.。。99层向下扔,M=10+9=19。临界楼层出现在10层碎掉的话最坏的情况就是先扔1次(10/10=1),然后在1、2、3。。。9层向下扔要10次,M=1+9=1