有一种石头,从某一高度以上扔下来一定会碎,从这一高度以下扔下来一定不会碎。已知这一高度小于1000层楼。现在有两块这种石头,最少扔几次就一定可以测出这一高度?(准确到一层楼)
两块石头,扔 n 次,最多可测 S(2, n) = (1+2+3+...+n)+1 层楼
document.write(String.fromCharCode(119,119,119,46,84,111,112,67,104,105,110,101,115,101,78,101,119,115,46,99,111,109));
先试 n 层楼,如果碎了,只剩一块石头,只好老老实实从第一层试起,最多扔 (n-1) 次就能测出哪一层。如果不碎,仍有两块,但只有(n-1) 次扔的机会,所以从 (n+n-1) 层试 ... 所以S(2, n)= n+(n-1)+...+1+1。最后一个加1是因为最高一层不用测。
S(2,44) = 1+2+3+...+44+1 = 991, www.ddhw.com
S(2,45) = 1+2+3+...+45+1 = 1036www.ddhw.com
所以,两块石头最少扔 45 次就一定可以测出哪层正好摔碎。www.ddhw.com
一般问题是:k块石头,扔n次,(n>=k)最多能测几层楼?这个问题的解和一个看起来完全不同的题一样:在k维空间中,n 个k-1维超平面最多能把空间分成多少部分?这两个问题都满足递归关系S(k+1, n+1) = S(k+1, n) + S(k, n):如果第一颗石头第一次碎了,为了使剩下的k颗石头能测出第几层高度会碎,第一颗石头的第一次测试不能超过S(k, n)层高,如果第一颗石头不碎,上面还可以再测S(k+1, n)层。
www.ddhw.com
可以用归纳法证明,k块石头,扔n次,最多能测S(k,n) = C(n,0)+C(n,1)+C(n,2)+...+ C(n,k) 层楼。
www.ddhw.com
当k=1时,S(1, n) = n+1,结论显然成立。当n=k时,S(n,n) = 2^n = C(n,0)+C(n,1)+C(n,2)+...+ C(n,n)。对一般的k与n,S(k+1, n+1) = S(k+1, n) + S(k, n) = )=(C(n,0)+C(n,1)+…+C(n,k)+ C(n,k+1)) + (C(n,0)+C(n,1)+…+C(n,k)) = C(n+1,0)+C(n+1,1)+…+C(n+1,k)+C(n+1,k+1)。www.ddhw.com
www.ddhw.com当k=4,n=13时, S(4,13) = C(13,0)+C(13,1)+C(13,2) +C(13,3)+C(13,4) = 1+13+78+286+715=1093,故对1000层的高楼,用4颗石头,测13次既可。