力扣365-水壶问题

水壶问题

题目链接

解题思路

  1. 假设两个水壶分别为A,B,容量为a,b;想要凑出C升的水
  2. 将A,B两壶看作一个整体
  3. 那么,这个整体只存在四种操作+a,-a,+b,-b;
  4. +a:就是将A壶装满
  5. -a:就是将A壶清空
  6. +b:就是将B壶装满
  7. -b:就是将B壶清空
  8. 想要凑出C升的水壶,需要满足xa+yb=c
  9. 即我们需要对A壶进行x次操作,对B壶进行y次操作,使得可以凑出C升的水
  10. 要想使得xa+yb=c成立,由裴蜀定理知道,要使的a和b的最大公约数可以整除c
c++ 复制代码
class Solution {
public:

    int gcd(int a,int b){
        return b ? gcd(b,a % b) : a;
    }
    bool canMeasureWater(int a, int b, int c) {
        if(c > a + b) return false;
        return !c || c % gcd(a,b) == 0;
    }
};
相关推荐
过客随尘18 分钟前
byte如何正确转int
后端·算法
seanmeng20221 小时前
理解AWS AgentCore - Long term Memory
算法
ygming1 小时前
Q55- code34- 在排序数组中查找元素的第一个和最后一个位置 + Q56- code33- 搜索旋转排序数组
前端·算法
qiuyunoqy3 小时前
蓝桥杯算法之搜索章 - 4
算法
Swaggy T3 小时前
自动驾驶决策算法 —— 有限状态机 FSM
linux·人工智能·算法·机器学习·自动驾驶
MATLAB代码顾问3 小时前
MATLAB实现遗传算法求解路网路由问题
开发语言·算法·matlab
啊阿狸不会拉杆3 小时前
《算法导论》第 21 章-用于不相交集合的数据结构
数据结构·c++·算法·随机森林
快去睡觉~3 小时前
力扣11:盛水最多的容器
算法·leetcode·职场和发展
小悟空4 小时前
【AI生成+补充】高频 hql的面试问题 以及 具体sql
sql·面试·职场和发展
楽码4 小时前
了解HMAC及实现步骤
后端·算法·微服务