#1468. 双水壶
双水壶
描述
桌上有两个水壶,容量分别为 升和 升()。一开始两个水壶都是空的()。
每次你可以选择下面 6 种操作之一:
- 把水壶 A 装满;
- 把水壶 B 装满;
- 把水壶 A 倒空;
- 把水壶 B 倒空;
- 把水壶 A 里的水倒进水壶 B,直到 A 空或 B 满;
- 把水壶 B 里的水倒进水壶 A,直到 B 空或 A 满。
请你求出最少经过多少次操作,可以使任意一个水壶的水量恰好等于目标值 ()。
如果无解,输出 -1。
输入格式
输入共一行,包含三个用空格隔开的整数 , , 。
输出格式
输出一行一个整数,表示最少操作次数。如果目标值不可能达到,输出 -1。
样例
样例输入 1
1 2 0
样例输出 1
0
解释:起始状态已经是 ,水壶 A 的水量为 ,已满足目标 ,无需任何操作。
样例输入 2
3 5 4
样例输出 2
6
解释:经典 6 步方案(以 BFS 求出的最短序列为例):
- 装满 B:
- B 倒入 A:
- 倒空 A:
- B 倒入 A:
- 装满 B:
- B 倒入 A: ✓
样例输入 3
4 7 3
样例输出 3
2
解释:
- 装满 B:
- B 倒入 A: ✓
相关
在以下作业中: