力扣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;
    }
};
相关推荐
rit843249937 分钟前
基于博弈论的小区分簇算法MATLAB实现
开发语言·算法·matlab
华清远见成都中心40 分钟前
C 语言内存管理深度解析:malloc/free 与嵌入式堆栈分配策略
java·c语言·算法
一行代码一行诗++1 小时前
关系操作符
算法
生成论实验室1 小时前
《源·觉·知·行·事·物:生成论视域下的统一认知语法》第五章 事:行在时空中的具体化
人工智能·算法·架构·知识图谱·创业创新
Liangwei Lin1 小时前
LeetCode 283. 移动零
算法
Lenyiin2 小时前
《LeetCode 顺序刷题》61 - 70
java·c++·python·算法·leetcode·lenyiin
岁岁的O泡奶2 小时前
NSSCTF_crypto_[LitCTF 2023]babyLCG
经验分享·python·算法·密码学·crypto·流密码
Hesionberger2 小时前
LeetCode 78:子集生成全攻略
java·开发语言·数据结构·python·算法·leetcode·职场和发展
前端之虎陈随易2 小时前
为什么今天还会有新语言?MoonBit 想解决什么问题?
大数据·linux·javascript·人工智能·算法·microsoft·typescript
risc1234562 小时前
DFA 的运行过程本身就是一种特殊的、空间优化的动态规划
算法·动态规划