一、提出问题
一个10升的桶装满水,还有7升、3升各一个空桶,请问如何分出5升水来?
二、解决问题
设10升、7升、3升桶分别为A、B、C桶。初始条件:A = 10,B = C = 0
方法一
1、从A桶倒满C桶。
此时,A = 7,B = 0,C = 3
2、将C桶全部倒入B桶。
此时,A = 7,B = 3,C = 0
3、从A桶倒满C桶。
此时,A = 4,B = 3,C = 3
4、将C桶全部倒入B桶。
此时,A = 4,B = 6,C = 0
5、从A桶倒满C桶。
此时,A = 1,B = 6,C = 3
6、从C桶倒满B桶。
此时,A = 1,B = 7,C = 2
7、倒空C桶。
此时,A = 1,B = 7,C = 0
8、从B桶倒满C桶。
此时,A = 1,B = 4,C = 3
9、将B桶全部倒入A桶。
此时,A = 5,B = 0,C = 3
变换步骤:
(10, 0, 0)→(7, 0, 3)→(7, 3, 0)→(4, 3, 3)→(4, 6, 0)→(1, 6, 3)→(1, 7, 2)→(1, 7, 0)→(1, 4, 3)→(5, 0, 3)
**说明:**后三步变换,破坏了三元数之和为10的规则,虽然最后变出了5