面试题
2016-05-26 09:36
387 查看
一个猴子身带100个香蕉,他距离家50米。这个猴子要带香蕉回去,但是他一次最多只能背50个香蕉,而且,每走一米他就要吃掉一个香蕉(往 回走也要吃香蕉)。这个猴子最后最多可以带多少个香蕉到家?
30
25
18
16
选D
解析:
猴子每往家走1米就停下来做一个判断:
a、将香蕉放下,回头去拿之前没能带走的香蕉;
b、继续往家的方向走;
那么猴子做选择的依据是:返回拿之前没能带走的香蕉所获得的收益必须大于或者等于返回路途中需要消耗的香蕉(等于的时候相当于多走点路多吃点香蕉,对吃货而言还是划得来的,最后带回家的香蕉数不会受到影响)。因为这里是走1米就判断一次,所以这里返回的消耗是2;也就是说只要每次没能带走的香蕉数大于等于2,那么回去拿都是值得的。
好了我们假设猴子第一次背着50个香蕉走到了1米处,此时在0米处(即起点)没能带走的香蕉是50个,远大于回去拿的成本数2,所以猴子果断的将身上的香蕉放下,留一个香蕉做路费返回到0米处将剩余的香蕉背到1米处,这个时候所有的香蕉都在1米处,因为0米到1米这段路猴子共走了三次,所以香蕉数共计为100-3=97。
以此类推:走了n米的时候剩下的香蕉数为100-3n;
那么这个时侯走到n+1米处,则留在n米处带不走的香蕉数是(每次最多带50个):100-3n-50=50-3n;
那么在n+1米处做上面的判断的时候就有50-3n>=2,即n<=16;
所以在n=16的时候有52个香蕉,带走50,剩下2个,猴子走到17米的时候其实是可以直接不回头一直往家走的,当然也可以回到16米处拿剩下的2个香蕉,但不管怎样在17米处,猴子都只剩下49个香蕉了,从此以后再也不用考虑要不要回去拿香蕉了,那么剩下的33米路程猴子要吃掉33个香蕉,最后带回家的就只有49-33=16
30
25
18
16
选D
解析:
猴子每往家走1米就停下来做一个判断:
a、将香蕉放下,回头去拿之前没能带走的香蕉;
b、继续往家的方向走;
那么猴子做选择的依据是:返回拿之前没能带走的香蕉所获得的收益必须大于或者等于返回路途中需要消耗的香蕉(等于的时候相当于多走点路多吃点香蕉,对吃货而言还是划得来的,最后带回家的香蕉数不会受到影响)。因为这里是走1米就判断一次,所以这里返回的消耗是2;也就是说只要每次没能带走的香蕉数大于等于2,那么回去拿都是值得的。
好了我们假设猴子第一次背着50个香蕉走到了1米处,此时在0米处(即起点)没能带走的香蕉是50个,远大于回去拿的成本数2,所以猴子果断的将身上的香蕉放下,留一个香蕉做路费返回到0米处将剩余的香蕉背到1米处,这个时候所有的香蕉都在1米处,因为0米到1米这段路猴子共走了三次,所以香蕉数共计为100-3=97。
以此类推:走了n米的时候剩下的香蕉数为100-3n;
那么这个时侯走到n+1米处,则留在n米处带不走的香蕉数是(每次最多带50个):100-3n-50=50-3n;
那么在n+1米处做上面的判断的时候就有50-3n>=2,即n<=16;
所以在n=16的时候有52个香蕉,带走50,剩下2个,猴子走到17米的时候其实是可以直接不回头一直往家走的,当然也可以回到16米处拿剩下的2个香蕉,但不管怎样在17米处,猴子都只剩下49个香蕉了,从此以后再也不用考虑要不要回去拿香蕉了,那么剩下的33米路程猴子要吃掉33个香蕉,最后带回家的就只有49-33=16
相关文章推荐
- java面试中问题
- php 面试 题汇总
- 程序员等级能力模型
- 面试题12:打印1到最大的n位数-大数问题-递归实现多层循环
- 黑马程序员——Java基础---数组
- 大部分人都会做错的经典JS闭包面试题
- 视频笔记之——技术面之项目面试技巧大揭秘
- 面试笔试算法目录
- 获得 1000 个赞的程序员高薪职业建议
- 程序员最值得关注的10个C开源项目
- 前端面试问题(一)
- 黑马程序员——Java基础---循环语句和控制跳转语句和Mark标记和方法重载
- 面试题001
- 剑指Offer--面试题11 数值的整数次方
- IT面试
- 多线程笔试面试总结(一)
- 程序员的知识管理
- 面试题30
- web前端细节性问题(面试时可能遇到的问题)——div+css(2)
- 面试题:一个数组插入另一个数组指定的位置