鸡蛋问题
问题:两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事。
有座100层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置。可以摔碎两个鸡蛋。
这道题的关键是如何去确定第一次下落鸡蛋的楼层,如果太小,没有摔碎,而剩余的范围依然很广,如果太大,摔碎了只剩一个蛋,就会从下面的楼层再继续丢,而这个时候就会是从第一层开始。
那第一次鸡蛋应该从哪里下落呢?这个时候可以通过分析想到,其实就是去求100层楼,最小多少次就可以求出鸡蛋放置的最佳位置。
假设我们最小要K次,既然最下是K次,那我们第一次就应该把鸡蛋放在第K层楼。因为如果鸡蛋第一次落下去就碎了那么我们就要从最小面往上面依次放置(K-1)次,所以最终为K次。如果第一次没有碎,那么我们就应该再往上加加楼层,到底加多少呢???
最主要的是,要抓住最小测试K次,而第一次我们放在K层,因此我们只能再加(K-1)层。因为如果一但摔碎了,我们只好从K+1层开始遍历到K-1层,最终加起来还是K次。如果这次依然没有碎呢?那么我们下次就应该加(K-2)层了。原理同上。此时还要考虑一个情况,如果鸡蛋一直没有摔碎会怎样?
那么鸡蛋放置的层数会一直往上加并且按照一定的规律,即:k+(k-1)+(k-2)+(k-3)+......+1=k(k+1)/2
这个值一定要大于等于最高楼层数,避免出现,到最后也无法确定鸡蛋能在的最高层数。

浙公网安备 33010602011771号