下午无意中看到了一个题:两个杯子,一个5升,一个3升,请在30s 内说出该如何倒出4升水。
网上的答案是这样的:先把3升的水杯倒满,然后把水倒入5升的水杯;然后再把3升的水杯倒满,接着将水倒到5升水杯中,倒满时候3升水杯里就只有1升水了;把5升水杯水倒掉;把那1升水倒进来;再把3升水杯倒满,再倒入5升水杯。这样就搞定。
我当时的想法是:先加满5升,在倒入3升的水杯,剩2升,把3升的倒掉,将2升倒入3升的杯子,把5升加满,在往已经有2升的杯子中到,则余下4升。
为了找出其他的一些倒法,只好利用计算机了,求解的结果如下(格式:[5升杯子剩余的水 , 3升杯子剩余的水]):
>> Found 10 Answers(in ten steps).
[0,0] --> [5,0] --> [2,3] --> [2,0] --> [0,2] --> [5,2] --> [4,3] total steps:6
[0,0] --> [5,0] --> [2,3] --> [2,0] --> [0,2] --> [5,2] --> [4,3] --> [4,0] total steps:7
[0,0] --> [5,0] --> [2,3] --> [2,0] --> [0,2] --> [5,2] --> [4,3] --> [4,0] --> [4,3] total steps:8
[0,0] --> [0,3] --> [3,0] --> [3,3] --> [5,1] --> [0,1] --> [1,0] --> [1,3] --> [4,0] total steps:8
[0,0] --> [0,3] --> [3,0] --> [3,3] --> [5,1] --> [0,1] --> [1,0] --> [1,3] --> [4,0] --> [4,3] total steps:9
[0,0] --> [0,3] --> [3,0] --> [0,0] --> [5,0] --> [2,3] --> [2,0] --> [0,2] --> [5,2] --> [4,3] total steps:9
[0,0] --> [5,0] --> [2,3] --> [0,3] --> [5,3] --> [5,0] --> [2,3] --> [2,0] --> [0,2] --> [5,2] --> [4,3] total steps:10
[0,0] --> [5,0] --> [2,3] --> [0,3] --> [3,0] --> [3,3] --> [5,1] --> [0,1] --> [1,0] --> [1,3] --> [4,0] total steps:10
[0,0] --> [0,3] --> [3,0] --> [3,3] --> [5,1] --> [5,0] --> [2,3] --> [2,0] --> [0,2] --> [5,2] --> [4,3] total steps:10
[0,0] --> [0,3] --> [3,0] --> [0,0] --> [5,0] --> [2,3] --> [2,0] --> [0,2] --> [5,2] --> [4,3] --> [4,0] total steps:10