百度面试题 :玻璃球 临界值
来源:互联网 发布:淘宝平价女装 编辑:程序博客网 时间:2024/06/11 19:53
题目如下:“有一个100层高的大厦,你手中有两个相同的玻璃围棋子。从这个大厦的某一层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略,来得知那个临界层面。”
解答:
(1)等分段求最小值:这种算法先假设把大楼分成等高的 x 段,这样在最差的情况下,要确定临界段,我们需要投掷 100/x-1 次,确定了临界段之后要确定临界层,我们需要再投掷 x-1 次。这样,问题就成了求函数 f(x)=(100/x-1)+(x-1) 的最小值问题。由于 f(x) 存在最小值且只有一个驻点,所以当 x=10 时 f(x) 取得最小值,最小值为18。
(2)上述解法并不是最优的,随着临界段的提高,我们搜索临界段的次数增加,但是在临界段内搜索临界层的次数却是一个常数,所以临界段越高,总的搜索次数就越多。那么我们能不能这么考虑,随着临界段搜索次数的增加(每次增加1),如果我们能够让在此临界段内搜索临界层的搜索次数减1,那么就可以保证在任何一个临界段,搜索次数都保持不变。设第一次投掷从第x层开始,那么在第一个临界段内搜索临界层的次数总和是 1+(x-1)=x。为了保证第2次总的搜索次数也为x,我们设第二次从第y层开始,要求:1+(y-x)=x,从而y=2x-1 (2x=x+(x-1))。第三次搜索从z开始,为保证总的搜索次数也为x,要求:2+(z-(2x-1))=x,从而z=3x-3 (z=x+(x-1)+(x-2)),以此类推,最终的投掷高度:last=x+(x-1)+(x-2)+..1>=100, x=13.6 即14次
0 0
- 百度面试题 :玻璃球 临界值
- [百度面试题]100层楼丢玻璃球问题
- [百度面试题]100层楼丢玻璃球问题
- GOOGLE扔玻璃球的面试题
- 百度面试题
- 百度面试题
- 百度面试题
- 百度面试题
- 百度面试题
- 2007 百度面试题
- 百度面试题一道
- 百度面试题
- 百度面试题
- 百度面试题
- 百度面试题
- 百度面试题
- 百度面试题
- 百度面试题
- Nginx 的启动、停止、平滑重启、信号控制和平滑升级
- STL基础系列之--list
- web组件(Servlet、JSP)的调用和如何实现数据传递
- 具备“十商”,你才能做好技术管理
- lua 如何输出树状结构的table?
- 百度面试题 :玻璃球 临界值
- Android平台下驱动的开发及测试框架概述(三)
- 15个令人震惊的HTML5实验
- POJ 2299 Ultra-QuickSort(树状数组水题)
- 堆(heap)实现
- hdu 1251 统计难题 字典树
- Struts2笔记一之简单了解Struts2
- 统计字母A出现的次数
- c 左右移问题