锁定老帖子 主题:百度二面智力题(破碎临界层)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-11
以生活常识来说,所谓的算法都不对的; | 必须先有一个假设:用来首先测试的第一块玻璃球,未破时是无损的;然后使用分块查找来测试; | 分层不对:如果第一块在50楼碎了,第二块在25层也碎了,就找不到答案了;
|
|
返回顶楼 | |
发表时间:2011-11-11
用降序的等差数列,n+(n-1)+(n-2)+...
当前几项之和超过100时试验成功 当数列加到1,数列和仍小于100时失败 临界值是n=14 |
|
返回顶楼 | |
发表时间:2011-11-13
simplyred 写道 用降序的等差数列,n+(n-1)+(n-2)+...
当前几项之和超过100时试验成功 当数列加到1,数列和仍小于100时失败 临界值是n=14 这个方式不错,更直接点100/10 + 10/2 - 1 (10和2是楼主说的那个分层方法里的) |
|
返回顶楼 | |
发表时间:2011-11-14
n+(n-1)+(n-2)+... +1<100
是正确答案 也容易理解 但是如果有3个球呢?n个球呢? n个球会是一个 NP的问题吗? |
|
返回顶楼 | |
发表时间:2011-11-14
在找着之前,必须保证有一个球没有碎才行,
|
|
返回顶楼 | |
发表时间:2011-11-15
分10块 100/10
10 20 30........ 从10开始开始验收 最坏结果一直到100层球才破 证明球的临界在90-100之间 然后开始以2开始分块 最坏结果4次 92 94 96 98 所以最坏结果是14次 |
|
返回顶楼 | |
发表时间:2011-11-16
这么多人以2分块的,一个球破了之后,就必须一层一试,没有捷径。
|
|
返回顶楼 | |
发表时间:2011-11-16
根据生活经验,第一层就碎了。玻璃啊大哥们。
|
|
返回顶楼 | |
发表时间:2011-11-16
设第一个球每间隔x层投一次,最多投100/x次(当前考虑出现小数的情况),根据间隔x找到投下后摔碎的那个层,然后剩下的间隔2层投一次(2,4,6...)这样再投(x-2)/2次。设最少投y次。最后得到方程如下:
100/x + (x -2)/2 = y;(1<=x<=100;且x,y为正整数) 这是一段曲线,找到临界点为间隔20次投放结果为y为14的情况有两种情况,一种间隔20次,一种是间隔10次。 我觉得按照实际情况不能只用二分法来解决,因为两次凑摔碎的时候就找不到临界点,只能找到区间。第一个球摔碎之前可以用二分法找,当投第二球时,我觉得按照间隔为2的投,这样算得次数少。 |
|
返回顶楼 | |
发表时间:2011-11-17
最后修改:2011-11-17
其实就是简单的二分查找! 没那么复查
|
|
返回顶楼 | |