给定两个容量不同的桶,以及先装满哪个桶,通过有策略地在两个桶之间倒水,确定量出精确升数需要多少次操作。
你的解答必须遵守以下规则:
你的程序接收以下输入:
你的程序应确定:
注意:只要任意一个桶发生变化,都算作 1 次操作。
示例: 一号桶最多能装 7 升,二号桶最多能装 11 升。 假设在某一时刻,一号桶里有 7 升,二号桶里有 8 升(7,8)。 如果你清空一号桶,二号桶不变,两个桶分别剩下 0 升和 8 升(0,8),这算作一次操作。 相反,如果你把一号桶倒入二号桶,直到二号桶装满,结果一号桶里有 4 升,二号桶里有 11 升(4,11),同样只算作一次操作。
另一个例子: 一号桶能装 3 升,二号桶最多能装 5 升。 题目要求你必须从一号桶开始。 所以你的第一个操作是装满一号桶。 第二个操作你选择清空一号桶。 对于第三个操作,你不能装满二号桶,因为这会违反第三条规则:任何操作之后,都不能出现起始桶为空而另一个桶已满的状态。
由 Lindsay Levine 在 Fullstack Academy 用 <3 写成。