博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一道面试题及扩展
阅读量:4562 次
发布时间:2019-06-08

本文共 1209 字,大约阅读时间需要 4 分钟。

前端时间出去面试,有道智力题很有意思:

给你9L与11L的桶各一个,还有不限量的水,如何得到10L的水?

拿到这种题目,不管三七二十一,先倒腾起来再说:

1)先将11L的桶灌满,然后用11L桶里的水将9L的桶灌满,那么我们就得到2L的水在11L的桶里;

2)然后,将9L的桶倒空;将11L通桶里的2L水倒到9L的桶里;

3)将11L的桶灌满,然后用11L桶里的水将9L的桶灌满(只要7L,因为步2中已经有2L了),那么得到4L(11-7)的水在11L桶里;

4)将9L的桶倒空;将11L桶里的4L水倒到9L桶;

5)将11L的桶灌满,然后用11L桶里的水将9L的桶灌满(只要5L,因为步4中已经有4L了),那么得到6L(11-5)的水在11L桶里;

6)将9L的桶倒空;将11L桶里的6L水倒到9L桶;

7)将11L的桶灌满,然后用11L桶里的水将9L的桶灌满(只要3L,因为步4中已经有6L了),那么得到8L(11-3)的水在11L桶里;

8)将9L的桶倒空;将11L桶里的8L水倒到9L桶;

9)将11L的桶灌满,然后用11L桶里的水将9L的桶灌满(只要1L,因为步4中已经有8L了),那么得到10L(11-1)的水在11L桶里; --- over

因为 10 》 9,9L的桶放不下这么多的水了。

 

扩展1:

这种方法得到的水,至少要多少升的水?又浪费了多少呢?

两个问题一起分析:

11L桶灌满5次: 11 * 5 = 55; --- 而且9L桶的水都来自11L桶,所以总共需要 55L的水。

9L桶倒空4次: 9 * 4 = 36;--- 这个就是浪费的水,因为倒掉的水都来自9L桶

最终得到的水:11L桶里的10L 还有满满一桶9L的水,即 10 + 9 = 19

19 + 36 = 55 演算正确。

 

扩展2:

给你NL与N+2L的桶各一个,还有不限量的水,如何得到(N+1)L的水?(N > 0, N为奇数)

(N+2)L桶灌满(N+2)/2次: (N+2)[(N+2)/2]= M(注: [] 标识取整数,下同,由于N为奇数,所以N+2也是奇数,所以[(N+2)/2]=(N+2-1)/2=(N+1)/2 );

--- 而且NL桶的水都来自(N+2)L桶,所以总共需要 ML的水。(M = (N+2)(N+1)/2 = N*N/2+3*N/2+1)

NL桶倒空[(N+2)/2]-1(即(N-1)/2))次: N * (N-1)/2 = P;--- 这个就是浪费的水,因为倒掉的水都来自NL桶(P = N*N/2-N/2)

最终得到的水:(N+2)L桶里的(N+1)L 还有满满一桶NL的水,即 N+N+1 = 2N+1

2N+1 + P = M 演算正确。

转载于:https://www.cnblogs.com/mengshu-lbq/archive/2012/10/22/2734643.html

你可能感兴趣的文章
Hive内置函数详解
查看>>
【转】MyEclipse快捷键大全
查看>>
IT职业技能图谱10--Hadoop家族技能图谱
查看>>
Java - 反射(1)
查看>>
控制台中显示执行的Sql语句
查看>>
Linux(Centos7)下搭建SVN服务器
查看>>
安卓开发的Tasks and Back Stack
查看>>
Ansi,UTF8,Unicode编码
查看>>
原子变量的性能问题
查看>>
Sybase PowerDesigner 15.0 完美版+特别文件
查看>>
快速傅立叶之二
查看>>
cetos 6.3 安装 apache+mysql+php
查看>>
js编写简单的贪吃蛇游戏
查看>>
2018/12/01 一个64位操作系统的实现 第四章 导入kernel.bin(4)
查看>>
如何在windows xp professional安装iis的解决方法
查看>>
抽象类和接口
查看>>
使用ASP.NET Atlas AutoComplete Behavior或AutoComplete Extender实现自动完成功能(下)
查看>>
golang 常见疑惑总结
查看>>
8大你不得不知的Android调试工具
查看>>
pc端元素拖拽
查看>>