[原创]测试玻璃球抗摔程度

问题:一座共100层的高楼,现需测试玻璃球的抗摔程度,即从哪层掉落玻璃球恰好摔碎,假设玻璃球在各楼层恰好掉落摔碎的几率相同,请设计方案,使实验次数尽可能少。

解答:

若用1颗玻璃球,则需从1层到100层逐层测试,因此平均测试次数为(1+2+3+...+100)/100=50.5,如此测试肯定不是最优方案。

因此考虑用2颗玻璃球,第一颗玻璃球从低层到高层逐层测试,设序列为x1, x2, ..., xn. 当第一颗玻璃球在xi层掉落摔碎时,就用第二颗从xi-1+1层逐层向上测试,直到第xi-1层,因此共需要实验(i+xi-xi-1-1)次。故总的平均测试次数为:

[(1+x1-1)+(2+x2-x1-1)+(3+x3-x2-1)+...+(n+xn-xn-1-1)]/n = (1+2+3+...+n-1+xn)/n = 100/n + n/2 -1/2 >= 2*(50)^(1/2)-1/2 ≈ 13.6  

因此平均测试次数为14,那么为了使每次测试次数都不超过14,则令i+xi-xi-1-1=14 可得x1=14,x2=27,x3=39,...,x11=99,x12=100。

故第一颗玻璃球测试楼层序列如上。

若不限制使用玻璃球的个数,则可考虑使用二分法,这样2^x = 100,x=7,最多需要7次实验,当然最多也需要准备7颗玻璃球。

如原创文章,转载请注明:转自http://www.cnblogs.com/xpowerlord/
原文地址:https://www.cnblogs.com/xpowerlord/p/3647554.html