0%
不想等待可以点我关掉Tips:非卡住不建议关闭,以确保Swup正常运行
551 字
3 分钟
有趣的倒水问题
2025-04-13

前言#

上个星期刷 B 站的时候碰巧刷到了这样一个视频

视频源地址:

【互动游戏】倒水谜题

P1

如图所示,这三个杯子容量分别为 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。

以上就是我的思路了。

有趣的倒水问题
https://blog.furryawa.com/posts/27404/
作者
绮曜
发布于
2025-04-13
许可协议
CC BY-NC-SA 4.0

评论