惨案发生在什么时候

来自计算思维百科
跳转至: 导航搜索
惨案发生在什么时候.jpg

一天夜里,邻居听到一声惨叫。早上醒来发现原来昨晚的尖叫是受害者的最后一声。负责调查的警察向邻居们了解案件发生的确切时间。一位邻居说是12:08分,另一位老太太说是11:40分,对面杂货铺的老板说它清楚地记得是12:15分,还有一位绅士说是11:53分。但这四个人的表都不准确,在这些手表里,一个慢25分钟,一个快10分钟,还有一个快3分钟,最后一个慢12分钟。你能帮警察确定作案时间吗?

解决方案

方案一:蛮力法

我们已知的是四个不准确的时间,和四只手表与准确时间的差值。我们不知道具体是哪只手表对应着哪个不准确的时间,相对比较笨的办法就是把手表与时间做成组合,即4只手表的时间差值分别取加减4个不准确的时间,当得出的四个结果(和或差)都一致时,那个结果就是确切的作案时间。

如:假设12:08,11:40,12:15,11:53分别对应着慢25分、快10分、快3分、慢12分;则有 12:08+25=12:33、11:40-10=11:30,…,很显然这个匹配是不对的。

像这样的组合我们要做4x3x2=24种;最后可以找出作案时间为12:05。

运用的计算思维

从上面的案例中,我们可以发现,本质上是一个组合匹配的问题,最直接地想法就是一一组合再筛选,对应了计算思维中的机械式思维方式。

方案二:转化法

我们想要得到准确时间,我们就得知道哪块表对应哪个差值,可以对已知得四个时间做一个排序,那么可以得到下面的结果:

11:40   11:53   12:08   12:15

我们又对四个手表与准确时间的差值进行排序为:

-25   -12   +3   +10

很显然,按照生活常识,我们可以知道最快的表比标准时间快得最多,最慢的表慢标准时间慢的最多,那么这个问题就变得很简单了,表与时间的对应关系即为它们排序后的组合:即11:40慢了25分钟,11:53慢了12分钟,12:08快了3分钟,12:15快了10分钟,因此可以得到作案时间为12:05.

运用的计算思维

问题本身其实并不复杂,重点就在转化思想,能够看清它们之间的联系,即最快表对应最快的时间,这样子问题就变成了一个排序问题,从慢到快的时间就对应了从慢到快的表,因此问题变得很简单,这就是利用转化思维的奇妙之处。

参考文献

[1] 《越玩越聪明的600个数学思维游戏》 化学工业出版社