扔杯子问题

来自计算思维百科
跳转至: 导航搜索
扔杯子问题.jpg

通过实验得知:如果一个杯子从楼房的第N层扔下去,杯子会被摔碎,那么在任何高于N层的楼层,杯子也会摔碎;如果站在第M层往下扔杯子,杯子不会被摔碎,那么在任何比M低的楼层杯子均不会被摔碎。现在给你两个这样的杯子,让你站在100层的大楼中测试,怎么样用最少的测试次数找出恰巧会使杯子摔破碎的楼层。

解决方案

方案一

从第一层开始扔,知道摔碎,那一层就是要找的楼层,但是这种方式不是最少的测试次数。

运用的计算思维

方案一运用了蛮力法寻找楼层,是一种机械化的思维方式。

方案二

可以先做一个小实验,拿出第一个杯子,根据杯子的重量测试杯子的相应速度对应不同的磕碰能力,将这种对应关系记录下来。然后,测出杯子最终的承受磕碰能力(即可能摔碎的情况),再根据杯子的最终承受能力,计算出杯子的相应速度。最后,根据楼层的高度算出此速度在哪层楼扔的时候会达到此速度,算出楼层数。比如,若结果是32.1,记为32层,在此楼层数上减5层,这样,可以消除计算时没考虑到的外界因素,从27层开始扔第二个杯子,直到杯子摔碎即为恰巧会使杯子摔破碎的楼层。

运用的计算思维

方案二利用实验的方法先通过计算预测出最有可能的楼层,再进行实际操作调整这个预测的误差,最后来找出答案,体现的是“仿真”的计算思维。

参考文献

[1]闵于思.风靡世界500强的思维训练题[M].武汉:华中科技大学出版社,2012

[2]于雷.逻辑思维游戏500题=Logic[M].北京:中央编译出版社,2009