两个杯子倒水问题求解及过程

倒水问题求解及过程

小时候,经常会遇到用两个容积不同的杯子(比如3L和5L),水源无限的情况下,倒出各种容积的水,早上突然脑洞一下,得到了一个不错的想法和倒水的步骤,就记了下来。
公式为:
ML1+NL2=V
在这里,L1和L2分别是杯子的容积,M和N分别是系数(只能取正整数和负整数),V是求解的结果,也就是能倒出水的容积(0≤V≥(L1+L2)

例子:
还是以上文中说的3L和5L杯子为例,即L1=3和L2=5,那么公式可以写成:
3M+2N=V(0≤V≥8)

倒水结果:
第一种情况: M=0, N=0, V=0 (嗯这个最好理解~)
第二种情况: M=1, N=1, V=8 (嗯这个也好理解~哈哈,这两种方法为了使得答案具有完备性,固写出来,重点看后面几种情况)

第三种情况: M=2, N=-1, V=1 or M=-3, N=2, V=1 …
第四种情况: M=-1, N=1, V=2 or M=4, N=-3, V=2 …
第五种情况: M=1, N=0, V=3 (只有L1装水)
第六种情况: M=3, N=-1, V=4 or M=-2, N=2, V=4 …
第七种情况: M=0, N=1, V=5 (只有L2装水)
第八种情况: M=7, N=-5, V=6 or M=-3, N=3, V=6 …
第九种情况: M=4, N=-1, V=7 or M=-1, N=2, V=7 …

倒水过程:
可以从上面看出,0~8所有的整数都能得到,是不是有疑问?
之所以把所有的M和N写出来,因为这些数字还暗含着倒水的过程,再接着举例子:
M=-3, N=3, V=6 ;
重点:整数代表接水,负数代表倒出,数字就代表L1和L2使用的次数
L1倒出去3次,L2接了3次,步骤如下:
两个杯子倒水问题求解及过程
画图步骤理解应该清晰一点,图有点粗糙,凑合凑合。从图中可以看出,分别使用L1倒出3杯水和L2接了三杯水,能够倒出6L的水,符合题意。

因此,刚才列出的9种情况,都能够按照这样的方法,依靠公式先求出目标的结果,再根据M和N的正负大小,可以依次还原出倒水的全过程。

tips:
L1和L2分别为3和5,当知道1L和2L都能倒出的时候,后面的4,6,7都能求出,因为1,2,3,5这些数,组合求和满足结果。就如同只依靠人民币10元、20元、50元,能够凑齐所有整数目(10的倍数)。