三个水桶等分8升水的问题 | 您所在的位置:网站首页 › 水桶容积12 › 三个水桶等分8升水的问题 |
目录智力题目答案第一种(7步)第二种(8步)问题分析人的思维计算机思维程序代码(PHP)运行结果小结推荐阅读
智力题目
有三个容积分别为3升、5升、8升的水桶,其中容积为8升的水桶中装满了水,容积为3升和容积为5升的水桶都是空的。三个水桶都没有刻度,现在需要将大水桶中的8升水等分成两份,每份都是4升水,附加条件是只能这三个水桶,不能借助其他辅助容器。 “恩,是的,这是一个很经典的问题。” “然而,我们并不能想全,不信请继续往下看。” 答案”废话不多说,直接看方法吧。“ 第一种(7步) 将8L的水桶中的水,倒满5L的水桶,这时:8L水桶为3L、5L水桶为5L、3L水桶为0L 将5L的水桶中的水,倒满3L的水桶,这时:8L水桶为3L、5L水桶为2L、3L水桶为3L 将3L的水桶中的水,倒入8L的水桶,这时:8L水桶为6L、5L水桶为2L、3L水桶为0L 将5L的水桶中的水,倒入3L的水桶,这时:8L水桶为6L、5L水桶为0L、3L水桶为2L 将8L的水桶中的水,倒入5L的水桶,这时:8L水桶为1L、5L水桶为5L、3L水桶为2L 将5L的水桶中的水,倒满3L的水桶,这时:8L水桶为1L、5L水桶为4L、3L水桶为3L 将3L的水桶中的水,倒入8L的水桶,这时:8L水桶为4L、5L水桶为4L、3L水桶为0L 第二种(8步) 将8L的水桶中的水,倒满3L的水桶,这时:8L水桶为5L、5L水桶为0L、3L水桶为3L 将3L的水桶中的水,倒入5L的水桶,这时:8L水桶为5L、5L水桶为3L、3L水桶为0L 将8L的水桶中的水,倒满3L的水桶,这时:8L水桶为2L、5L水桶为3L、3L水桶为3L 将3L的水桶中的水,倒满5L的水桶,这时:8L水桶为2L、5L水桶为5L、3L水桶为1L 将5L的水桶中的水,倒入8L的水桶,这时:8L水桶为7L、5L水桶为0L、3L水桶为1L 将3L的水桶中的水,倒入5L的水桶,这时:8L水桶为7L、5L水桶为1L、3L水桶为0L 将8L的水桶中的水,倒满3L的水桶,这时:8L水桶为4L、5L水桶为1L、3L水桶为3L 将3L的水桶中的水,倒入5L的水桶,这时:8L水桶为4L、5L水桶为4L、3L水桶为0L我相信答案肯定不止两个,到底有多少种答案? 带着这个疑问,我们来设计一个算法吧。 问题分析 人的思维解决这个问题的关键是怎么通过倒水凑出确定的1升水或能容纳1升水的空间。 例如,当8L水桶或5L水桶或3L水桶有1L水时,都能快速倒出4L水。 计算机思维“穷举法” 水桶初始状态:8L水桶装满水,3L和5L的水桶为空。 水桶最终状态:3L水桶为空,5L和8L的水桶各4L水。 假设将每个状态下三个水桶中的水的体积作为status。 从 $status = array(8,0,0) 得到 $status = array(4,4,0)。 当然还会有一些限制: 1.各个水桶的都有最大值: 0 |
CopyRight 2018-2019 实验室设备网 版权所有 |