#1247. 三个水杯
三个水杯
三个水杯
题目描述
给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。
输入格式
第一行一个整数 N(0<N<50)表示 N 组测试数据。
接下来每组测试数据有两行:
- 第一行给出三个整数 V1 V2 V3(V1>V2>V3,V3>0,V1<100),表示三个水杯的体积。
- 第二行给出三个整数 E1 E2 E3(体积小于等于相应水杯体积),表示我们需要的最终状态。
输出格式
每行输出相应测试数据最少的倒水次数。如果达不到目标状态输出 -1。
样例输入
2
6 3 1
4 1 1
9 3 2
7 1 1
样例输出
3
-1
数据范围
- 0 < N < 50
- V1 > V2 > V3 > 0
- V1 < 100
- 0 ≤ Ei ≤ Vi
初始状态为 (V1, 0, 0)。每次倒水时,从一个杯子倒向另一个杯子,直到源杯子为空或目标杯子已满。求达到目标状态的最少倒水次数。