作者:Alistar1991_281 | 来源:互联网 | 2023-05-19 16:34
今天听一好事者说数学天才问题,问题如下:在一酒馆里,有两名买酒者,酒店老板量酒用的工具正好不在,店中只有一个装有8公升酒的桶,还有两个空桶,一个是3公升的,一个是5公升的,这时如果要利用这两个空桶来分
今天听一好事者说数学天才问题,问题如下:在一酒馆里,有两名买酒者,酒店老板量酒用的工具正好不在,店中只有一个装有8公升酒的桶,还有两个空桶,一个是3公升的,一个是5公升的,这时如果要利用这两个空桶来分那一桶8公升的洒,问如何才能分开一人正好4公升,(不能用其它的容器,只有这三个容器)请各位看看如何用编程的方法来解出分酒的具体步骤或思路。
11 个解决方案
很简单啊:先将5公升装满,倒出3公升就剩下2公升了。。。。
然后将剩下的酒分给需要者,
这时候剩六公升,用同样的方法再倒2公升出来不就分出来了吗
这种题目编程实现意义不大,只不过将思想重复一遍而已。
哎,能不能简单地实现?比方说,先从8公升的桶往5公升的桶里倒,同时倾斜5公升的桶使其开口的下沿与桶底上沿水平,这样刚好是2.5公升;再用同样方法往3公升的桶里倒1.5公升,然后全倒到5公升的桶里,合计4公升;8公升的桶里还剩4公升。
不过我看这种方法可能跟题意有些出入吧?:)
yousp(初级菜鸟) 不对吧,没有其他的容器能用
把8公升的倒3公升出来,然后把3公升移到5公升的桶里,然后再倒3公升出来,把其中两公升倒到5公升里面,3公升的桶里面就剩下1公升,然后把5公升的倒回去,把那1公升倒到5公升桶里面,然后倒3公升到3公升的桶里,再倒到5公升桶里面。这样大桶和5公升的桶里面都有4公升。
to: LiaoM()
如果没有另外两个更大的桶就应该是你那样倒了,这个题目和汉诺塔的原理类似
怎样用计算机来找出正确的分酒步骤呢?工作原理是什么
800->350->323->620->602->152->143->440
编成方法使用树,从800开始,对每一种排列,穷举经过一次倒酒后可能的结果,排除前面已经存在的排列,将剩下的排列作为此排列的分支,递推调用,最后找到440的排列。根据从800到440的路径即可得到分酒的方法。