问题是什么:
现在只有两只杯子AB,容量分别是:M升和N升,在只用这两个杯子的前提下,怎样操作可以得到K升水?
分析问题的过程:
明确能够获得的信息:
问题中的参数
先来明确一下问题中总共有几个参数:
首先能够确定的是两个常量AB的容量:M和N;(M⩾\geqslant⩾N)
我们将一个杯子为空,一个杯子非空时看作为一次测量的结束。问题让我们求解的结果K(0⩽\leqslant⩽K⩽\leqslant⩽M)就可以看作是结束完某次测量后中有水水杯中存储水的体积。而我们可以设结束完一次测量后有水容器中存储水的体积为X(0⩽\leqslant⩽X⩽\leqslant⩽M)
最后还有两个不易发现的参数:AB水杯分别中剩余空间的大小,我们可以设他们分别为:YA(0⩽YA⩽M),YB(0⩽YB⩽N)Y_A(0\leqslant Y_A \leqslant M),Y_B(0\leqslant Y_B \leqslant N)YA(0⩽YA⩽M),YB(0⩽YB⩽N)
测量水方法的总结和分析
方法总结
要解决这个问题最重要的便是如何通过两个水杯测量。一般有三种方法:
第一种方法(F1F_1F1)是:在不注入新水的情况下,通过将储存在容量为M杯子中储存的水X旧X_旧X旧,倒满容量为N的空杯子,来获得X新X_新X新。由此可知:
- X新=X旧−NX_新=X_旧-NX新=X旧−N
- N⩽X旧⩽MN \leqslant X_旧 \leqslant MN⩽X旧⩽M
- 0<X新⩽M−N0 < X_新 \leqslant M-N0<X新⩽M−N;
第二种和第三种方法均为,通过新水注满一个杯子后,将杯中一部分水倒满因存有X旧X_旧X旧而改变的另外一个杯子的剩余空间Y,来获得X新X_新X新
注满的杯子的容量为M的情况下(F2F_2F2),我们可以得到:
- X新=M−YB=M−(N−X旧)=X旧+(M−N)X_新=M-Y_B=M-(N-X_旧)=X_旧+(M-N)X新=M−YB=M−(N−X旧)=X旧+(M−N)
- 0⩽X旧⩽N0 \leqslant X_旧 \leqslant N0⩽X旧⩽N
- M−N⩽X新⩽MM-N\leqslant X_新 \leqslant MM−N⩽X新⩽M
注满的杯子的容量为N的情况下(F3F_3F3),我们可以得到:
- X新=N−YB=M−(M−X旧)=X旧−(M−N)X_新=N-Y_B=M-(M-X_旧)=X_旧-(M-N)X新=N−YB=M−(M−X旧)=X旧−(M−N)
- M−N⩽X旧⩽MM-N \leqslant X_旧 \leqslant MM−N⩽X旧⩽M
- 0⩽X新⩽N0\leqslant X_新 \leqslant N0⩽X新⩽N
初始情况的分析
因为初始情况时X=0,所以只能进行F2F_2F2
方法分析
我们不难发现F2F_2F2与F3F_3F3互为逆过程,又因为初始情况只能进行F2F_2F2,所以F3F_3F3对整体测量没有作用,因此对整体测量来说只有F1F_1F1和F2F_2F2起作用。
结论
最终我们发现只需要判断F1F_1F1和F2F_2F2进行的次数即可,即a(M-N)-bN=K中次数a,b的值。