阿里智力题之——烧绳法计算15分钟、30分钟、45分钟、75分钟

一、简单概述
在各位面试的时候,阿里、字节跳动等一些公司喜欢在进行C++开发面试的时候出一些智力题来考验大家的逻辑思路。烧一根不规则的绳子,计算时间就是其中的一道经典题目。

二、烧绳子问题介绍
燃烧一根不均匀的绳子需要一小时,怎么做才能问如何度量出半个小时,45分钟,75分钟?

这道题目的一个难点就是不均匀,所以并不是从一端烧到绳子的中间就是半个小时。

三、解法思路
想解出烧绳子的问题,有两个关键度量时间点30分钟和15分钟:

1. 度量半个小时
第一个问题度量半个小时时最简单的,绳子虽然是不均匀的,但是一根绳子完整烧完所用的时间是固定的。从两端烧绳子,等绳子全部烧完所用的时间就是半个小时。

2. 度量15分钟
已经可以度量出半个小时与一个小时了,所以想要度量出45分钟与75分钟只需要度量出15分钟就可以了。

15分钟怎么度量的方法就是将半个小时的绳子从两端烧,绳子烧尽时所用的时间就是15分钟。而我们只有不均匀一个小时的绳子,从绳子两端烧尽可以获得半个小时,但是这根绳子不能用来进行15分钟的度量了,所以一个绳子是度量不出15分钟的,解决问题需要两根绳子。

去两根绳子分别编号1和2,绳子1从两端开始烧,绳子2从一段开始烧。当绳子烧尽时,熄灭绳子2。此时绳子2燃烧尽所需要的时间就是半个小时,从绳子2两端烧的话燃尽就是15分钟。关键点15分钟已经可以度量出来的了,那么剩下的问题就迎刃而解了。

四、具体解法
1. 度量30分钟:
取一根绳子,从两端燃尽所欲要的时间就是半个小时。

2. 度量15分钟:
取两根绳子,第一根从一段燃烧,另二根从两端同时燃烧。当第二根燃尽的时候,将第一根剩余绳子从两端燃烧,第一根绳子剩余从两端燃烧耗尽所需要的时间就是15分钟。

3. 度量45分钟:
取两根绳子,采用上述方法所需的总时间就是45分钟(30+15)

4. 度量75分钟
取三根绳子,其中两根采用上述方法得到燃尽需要半个小时的绳子,然后从两端烧燃尽需要15分钟,取第三根绳子从一段烧,总共需要75分钟(15+60).

posted @ 2020-06-03 17:19  江河湖海日月卿  阅读(876)  评论(0编辑  收藏  举报