前言
上个星期刷B站的时候碰巧刷到了这样一个视频
视频源地址:

如图所示,这三个杯子容量分别为4、9、9,在最开始,前两个杯子的水被装满,后一个杯子是空,现在需要通过倒水,使得有一个杯子中的水为6即能获胜。
倒水要求:
-
选择两个杯子,将1个杯子的水倒入另一个杯子中,直到另外的杯子被填满,或者是这个杯子被倒空为止。(即一次倒完,多则存余)
-
在倒水过程中可以指定三个杯子中存水量最少的杯子将其清空,例如,初始状态为490(三个杯子水量的顺序),若我一开始就清空,那么除去「0」,「4」这个杯子就会被清空,变成090。这个『清空』最多只能使用两次
正文
我的解法(15步,想了我2节课):
思路
此处有3个瓶子,其中有2个「9」,可以推测,如果处理不当,是很容易进入循环里面的,目光再转向「4」,可知这个就是一个转折点了。两个瓶子水是满的,那么最后一个瓶子将作为『过渡瓶』,将「4」放到过渡瓶中,然后将中间水瓶的「9」依次用4拆开,可得454,、058、418,那么在这里,再倒最后一次得319。
在319这里,是必须要清空一次水,如果不倒,就会出现049的情况,很明显,这不就是最开始的490吗?这倒了和没倒有什么区别。所以这里要清空一次,变成309。
这里由于中间为「0」,那么理应中间为『过渡瓶』。将「3」放入,再将「9」依次分割,可得到039、435、075、471、291。这里出于『不循环』的考虑,必须要清空一次水,变成290,至此,两次清空全部用完。
此时当最后一个瓶子作为『过渡瓶』,那么倒2拆9得092,452。欸☝️😀,这最后一步,当也就出来了,成056。
以上就是我的思路了。

