有两个水壶,容量分别为jug1Capacity
和 jug2Capacity 升。水的供应是无限的。确定是否有可能使用这两个壶准确得到 targetCapacity 升。
如果可以得到 targetCapacity 升水,最后请用以上水壶中的一或两个来盛放取得的 targetCapacity 升水。
你可以:
装满任意一个水壶
清空任意一个水壶
从一个水壶向另外一个水壶倒水,直到装满或者倒空
一个水壶a升,一个水壶b升,假设b>a,如果a和b互素,那么1~b都能取到,则1~(a+b)都能取到。
如果a和b不是互素:
b是a的倍数:则a,2a,3a,…,b,(a+b)都能取到
b和a的最大公因数c:则c,2c,3c,…,b,(b+c),(b+2c),…,(b+a)都能取到
bool canMeasureWater(int jug1Capacity, int jug2Capacity, int targetCapacity) {int a = 0, b = 0;int t = targetCapacity;if (jug1Capacity <= jug2Capacity) {a = jug1Capacity;b = jug2Capacity;} else {b = jug1Capacity;a = jug2Capacity;}if ((b % a) == 0) { // 1和2为倍数关系if (!(t % a) && (t <= (a + b))) {return true;}return false