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

如图所示,这三个杯子容量分别为 4、9、9,在最开始,前两个杯子的水被装满,后一个杯子是空,现在需要通过倒水,使得有一个杯子中的水为 6 即能获胜。
倒水要求:
-
选择两个杯子,将 1 个杯子的水倒入另一个杯子中,直到另外的杯子被填满,或者是这个杯子被倒空为止。(即一次倒完,多则存余)
-
在倒水过程中可以指定三个杯子中存水量最少的杯子将其清空,例如,初始状态为 490(三个杯子水量的顺序),若我一开始就清空,那么除去「0」,「4」这个杯子就会被清空,变成 090。这个『清空』最多只能使用两次
正文
我的解法(15 步,想了我 2 节课):{% psw 094 454 058 418 319 309 039 435 075 471 291 290 092 452 056 %}
思路
此处有 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。欸:point_up::grinning:,这最后一步,当也就出来了,成 056。
以上就是我的思路了。