力扣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;
    }
};
相关推荐
我命由我1234531 分钟前
72 法则极简理解
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
Keven_112 小时前
算法札记:如何卡SPFA
算法·spfa
可编程芯片开发2 小时前
基于电压电流双闭环控制的三相整流器系统simulink建模与仿真
算法
可编程芯片开发2 小时前
基于ADRC自抗扰算法的UAV飞行姿态控制系统simulink建模与仿真
算法
学究天人2 小时前
数学公理体系大全:第七章 连续统假设与力迫法简介
人工智能·算法·机器学习·数学建模·动态规划·图论·抽象代数
Keven_112 小时前
算法札记:SPFA什么时候用队列什么时候用栈
算法·spfa
:-)3 小时前
基础算法-选择排序
数据结构·算法·排序算法
浮沉9873 小时前
二分查找算法例题(一)
算法
退休倒计时3 小时前
【每日一题】LeetCode 17. 电话号码的字母组合 TypeScript
算法·leetcode·typescript
粘稠的浆糊3 小时前
[AtCoder - abc465_d ]X to Y题解
数据结构·c++·算法