挑战经典逻辑面试题:如何使用少于15L的水,用2个水壶从池塘里取得3升水
温柔似野鬼°
882次浏览
2021年01月21日 02:28
最佳经验
本文由作者推荐
6字游戏名-
挑战经典逻辑面试题:
如何使用少于
15L
的
水,用
2个水壶从池塘里取得
3
升水
这是一道经典的逻辑面试题
! < br>不管你是产品经理,还是程序员,面试的时候都会经常看到。
在面试场景下,一般人
5- 10
分钟内会给出答案。如果此时的面试官变换考察形式,在给出
一个解题答案的基础上,让你 进行优化,你是否能够有更好的解决办法呢?
题目:
假设有一个池塘,里 面有无穷多的水。现有
2
个空水壶,容积分别为
5
升和
6
升 。问题是
如何只用这
2
个水壶从池塘里取得
3
升的水。
我们的答案是:
1.
将
5L
桶装满水,倒入
6L
桶,此时
6L
桶有
5L
水;
2.
再次将
5L
桶装满水,倒入
6L
桶,
6L
水满,< br>5L
桶还剩
4L
水;
3.
将
6L
桶的水倒空,将
5L
桶中剩余的
4L
水倒入
6L
桶,此时
6L
桶有
4L
水;
4.
将
5L
桶再次装满水,将
6L
桶的水注满,
5L
桶剩余
3L
水。
全过程用水
15L
。
挑战:
比此方案少用水的同学,贴出你的答案,思路和过程,答案无重复的第一人将获得
30C
币
和俱乐部
30
积分
。
有一个投机取巧的方法是,一个桶,倾泻倒水,倒至露出桶底的棱的一刻,正好是半桶水,
so 6L / 2 = 3L
。
灌水有技巧。
1.6L
的桶装满水,倒入
5L
的桶,
6L
的桶 剩
1L
,再把
5L
的水倒没,把剩的
1L
倒入
5L
并
在桶中做一个记号;
2.6L
的桶装满水,倒入
5L< br>的桶,
6L
的桶剩
2L
;
3.
看着
5L
桶的记号往出倒水,剩到记号位置的
1L
水;
4.
两个桶里的水倒在一起,共为
3L
,总共用水
12L
。
6L
的桶装满水,桶底有两个半径相等的洞,
5L< br>的桶在其中一个洞口接水,
6L
的桶里面的
水流完,则
5L
的 桶里面就有
3L
的水了。总共
6L
1.6L
的桶装满水,倒满
5L
的桶,
6L
桶剩下
1L
水,倒掉
5L
桶里的水,把
6L
桶里的
1L
水倒入
5L
桶中;
2.6L
桶装满水,倒满
5L
的桶,
6L
桶剩下
2L
水,倒掉
5L
桶里的水,把
6L
桶里的
2L
水倒
入
5L
桶中;
3 .6L
桶装满水,倒满
5L
的桶,
6L
桶里剩下
3L
水。
找根绳子,一段系一个桶,中间吊着,假 设
5L
的轻就在
5L
中装水使之平衡。然后
6L
中装
满,往
5L
中倒,等平衡后,
6L
中装水就为
3L
(平衡 原理)
1
、
6
升的水壶装满,倒
5
升到沧
5
升的水壶中,此时
6
升水壶中有
1升水。
2
、将
6
升水
壶放到池塘水面,浮力把它浮起 来,记住吃水深度。
3
、把
5
升水壶倒空,再把
6
升水壶中
的
1
升水倒到
5
升水壶中。
4
、
把
6
升水壶放到水面,根据吃水深度,
使得
6
升水壶里 达到
1
升水,再把
6
升水壶的水倒到
5
升水壶中。
5
、重复
4
步骤。
步骤如下:
1.
状态:
6L
的桶装满水,
5L< br>的是空桶。将
6L
桶中的满水倒入
5L
的空桶中,此时
6L< br>的桶
中剩下
1L
的水,再把
5L
的桶中的水清空。将
6L
桶中剩下的
1L
的水倒入
5L
的桶中。
2.
状态:
6L
的桶装满水,
5L
的桶装有
1L
的水。 将
6L
的装满的水倒入
5L
的装有
1L
水的
桶中,
6L
的桶中剩下
2L
的水,像步骤一样。把
5L
的桶中的水 清空,倒入
2L
的水。
3.
状态:
6L
的桶装满 水,
5L
的桶装有
2L
的水。将
6L
的桶中的水倒入
5L
的桶中后,
6L
的桶中剩下的水即是
3L
。
1.
取
6
升水倒入
5< br>升桶,
6
升桶余
1
升水,
标记
1
升水位置,
5
升桶水倒出,
6
升桶中
1
升水
倒入
5< br>升桶。
2.
利用标记用
6
升桶分别再取两次
1升水倒入
5
升桶中,得到
3
升水。
共用了:
8
升水!
如果按图上的描述两个桶只有高度上的差距的话,有个解法:
1.
将两个桶 水平放好,
5L
桶倒满,再倒入
6L
桶,再把
5L
桶倒满, 得到两个
5L
的水。
(共
用水
10L
)
2.
将
5L
水部分倒入
6L
,将
6L
倒满,这样就 一个
4L
一个
6L
,按照
4L
的高度标记,将
6L
水倒出一部分,跟
4L
水平,就得到两个
4L
。(此步骤没用水)< br>
3.
将
5L
桶加满(加
1L
即可),再倒入
6L
桶,这样
5L
桶就只剩
3L
了。
(此步骤用掉
1L
)
所以共用掉
11L
水。(看了下题目,感觉常规解法做不 到,于是只有想这些投机取巧的方
法了)
分析:从题目来看这两个桶是形状相同,但容积不同的桶。解析如下:
1.
用
6L
桶取满水。(此步骤消耗
6L
的水)
2.
将
6L
水倒置在
5L
桶上,此时
5L
桶满,溢出的
1L
水在
6L
桶里,再将两桶平方地面,使
5L
桶里的水倒的跟
6L
桶里水相同,
同理,
5L
桶里水剩
1 L
,
将
6L
桶里的
1L
倒入
5L
桶里,< br>5L
桶里剩
2L
水。所有的水都是基于步骤
1
所取的水。(此 步骤不消耗水)
3.
将
6L
桶装满水,
再倒置在
5L
桶上,
上一部
5L
剩余
2L
水,
此时有
3L
水溢出在
6L
桶中。
(此步骤消耗
6L
水)
共消耗
12L
水
进一步理解见图:
我觉得用杠 杆原理是可行的,假设
6L
桶重为
k6,5L
桶重
k5,
第 一次称重,假设两边刻度为
2,3
;则
k6 * 2 = k5 * 3
;然后将
5L
水倒入
5L
的桶中可以得到,
(k5 + 5) * 2 = (k6 + 3) * y;
其
中根据上面假设条件来看,
k5, k6
是已知的,我们可以计算出
y = ((k5 + 5) * 2)/((k6 + 3));
然
后就出来了,在第二次称重的时候,
k5
这边杠杆长度保持原有 刻度
2
,调整
k6
这边的杠杆
长度为
y = ((k5 + 5) * 2)/((k6 + 3))
,然后往
6L
桶中倒水直至杠杆平衡,这个时 候
6L
桶重水
为
3L
,总共用水
8L
你的方案原理是可行的。
但下面两个公式,他们的关联在哪里?如果第一个公式
“k6 * 2 = k5 * 3”
的目的是找到平衡点并记录,那么
第二个公式就应该为
(k5 + 5) *
3
= (k6 + 3) * y,
而不是
“(k5 + 5) *
2
= (k6 + 3) * y;”
。你觉得呢?
标记法,无论透明不透,只要我手能 伸进去就可以,我用大桶,打
6
升水,倒给
5
升的,留
1
升 ,做好标记,倒掉,然后,小桶往大桶里倒
1
升,
5-1 =4-1=3
;用了
6
升
前提是,我手能进去,不规则形状等特殊 情况除外,桶是金刚做的,我指甲划不破,那我也
没办法。另,题目上单位是升,水的质量不一定是1
:
1
,换算成质量,不符合逻辑,好比
变量类型不同,会报错的
还有种只用
5
升的办法,但是有个前提,
6
升水的桶,底部可以 拆卸,放到上面,那么,我
打
5
升水,倒入
6
升桶,做好标记,把水 倒回
5
升,然后把
6
桶倒过来,标记就在下面,盖
子?底?装上~
用上面的倒
1
升水办法,
只要
5
升,
因为题 目给出的容器最小值是
5
,
所以,
5
是最少的了,只用
3< br>升,特殊形状可以,圆桶就比较难
特殊形状
6
升容器,正方体,一根 绳子吊住一个角,放下去,捞起就是
3
升