php怎么解决三个水桶等分8升水问题
这篇文章主要介绍了php怎么解决三个水桶等分8升水问题的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php怎么解决三个水桶等分8升水问题文章都会有所收获,下面我们一起来看看吧。
公司主营业务:网站设计、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出夏河免费做网站回馈大家。
智力题目
有三个容积分别为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 <= status[0] <= 8;
0 <= status[1] <= 5;
0 <= status[2] <= 3;
2.当前倒水之后各个水桶的状态,与历史倒水之后各个水桶的状态,不能相同。
3.当前水桶为空时,不能倒给其他水桶。
4.当前水桶为最大容积时,其他水桶不能再向这个水桶倒水。
程序代码(PHP)
关于“php怎么解决三个水桶等分8升水问题”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“php怎么解决三个水桶等分8升水问题”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。
分享标题:php怎么解决三个水桶等分8升水问题
分享地址:http://hbruida.cn/article/jdcpdj.html