为了方便说明,将容量为12品脱,8品脱,5品脱瓶子分别称为大瓶子,中瓶子,小瓶子。按照下面2种规则中的如何一种可以解决这个问题: 规则: 1. 大瓶子只能倒入中瓶子 2. 中瓶子只能倒入小瓶子 3. 小瓶子只能倒入大瓶子 4. 小瓶子只有在已经装满的情况下才能倒入大瓶子 5. 若小瓶子被倒空,则无论中瓶子是否满,应马上从中瓶子倒入小瓶子
之所以要规定倒酒的顺序是为了防止状态重复。而根据这5条规则,大瓶子每次倒入中瓶子的酒总是8品脱,小瓶子每次倒入大瓶子的酒总是5品脱。(请结合下面的表来理解这句话,理解这点很重要)
有了上面的规定后,倒酒的顺序就确定下来了:
| ||||||||||||||||||||||||||||||||||||
设大,中,小三个瓶子容量分别是C1,C2,C3,需要倒出的容量是R 则实际上要是我们能将容量为R的酒倒到中瓶子和小瓶子中就可以啦(有点废话)
设大瓶子倒满中瓶子X次,从小瓶子中倒入大瓶子Y次。 那么显然由大瓶子累次倒入中瓶子和小瓶子总共C2*X的酒。而由小瓶子倒入大瓶子一共有C3*Y的酒。 那么最终,小瓶子和中瓶子剩余的酒显然就是 C2*X - C3*Y
因此,泊松分酒问题实质上转化为下面的不定方程是否有正整数解的问题:
C2*X - C3*Y = R
对于我们的问题, C1=12,C2=8,C3=5,R=6
倒酒规则实质上相当于解下面这个不定方程: 8X - 5Y = 6 ( 限定 X > 0 ,Y > 0 ) 最小整数解是 X=2,Y= 2
表示倒满8品脱的瓶子2次,5品脱的瓶子倒空2次 那么8品脱的瓶子和5品脱的瓶子剩酒总量必然是 8 * 2 – 5 * 2 = 6 |