题解


AC-Code

using PII = pair<int, int>;class Solution {public:bool canMeasureWater(int x, int y, int z) {stack<PII> stk;stk.emplace(0, 0);auto hash_function = [](const PII& o) {return hash<int>()(o.first) ^ hash<int>()(o.second);};unordered_set<PII, decltype(hash_function)> seen(0, hash_function);while (!stk.empty()) {if (seen.count(stk.top())) {stk.pop();continue;}seen.emplace(stk.top());auto [remain_x, remain_y] = stk.top();stk.pop();if (remain_x == z || remain_y == z || remain_x + remain_y == z) {return true;}// 把 X 壶灌满。stk.emplace(x, remain_y);// 把 Y 壶灌满。stk.emplace(remain_x, y);// 把 X 壶倒空。stk.emplace(0, remain_y);// 把 Y 壶倒空。stk.emplace(remain_x, 0);// 把 X 壶的水灌进 Y 壶,直至灌满或倒空。stk.emplace(remain_x - min(remain_x, y - remain_y), remain_y + min(remain_x, y - remain_y));// 把 Y 壶的水灌进 X 壶,直至灌满或倒空。stk.emplace(remain_x + min(remain_y, x - remain_x), remain_y - min(remain_y, x - remain_x));}return false;}
};

LeetCode——365.水壶问题【贝祖定理】相关推荐

  1. [BFS][贝祖定理]leetcode365:水壶问题(medium)

    题目: 题解: 思路1:BFS 枚举所有的状态 本题要是想枚举所有的状态扩展到终点的话,只能使用 BFS,使用 DFS 会递归嵌套过多导致栈溢出. 思路2:贝祖定理 而贝祖定理告诉我们,ax+by=z ...

  2. Leetcode.365 水壶问题

    题目链接 Leetcode.365 水壶问题 mid 题目描述 有两个水壶,容量分别为 x和 y升.水的供应是无限的.确定是否有可能使用这两个壶准确得到 z升. 如果可以得到 z升水,最后请用以上水壶 ...

  3. ACM数论 裴蜀定理(贝祖定理)

    一.内容定义 「裴蜀定理」,又称贝祖定理(Bézout's lemma).是一个关于最大公约数的定理.其内容定义为:对于不全为零的任意整数 a 和 b,记二者的最大公约数为 g 即 gcd(a,b) ...

  4. 裴蜀定理(贝祖定理)

    在介绍裴蜀定理前,我们先看一个比较经典的问题: 有两个容量分别为 x升 和 y升 的水壶以及无限多的水.请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水? 如果可以,最后请用以上水壶中的一或 ...

  5. 有关贝祖定理的一个小问题

    有关贝祖定理的一个小问题 所谓贝祖定理是说: 两个整数 a.b 是互质的.等价于方程 ax+by=1有整数解. 当然. 贝祖定理另一种更一般的形式,说的是两个整数 a.b有最大公因数是c,等价于方程  ...

  6. 裴蜀定理(或 贝祖定理 )

    裴蜀定理(或 贝祖定理 ),说明了对任何 整数 a.b和它们的 最大公约数 d,关于 未知数 x和y的线性不定方程(称为裴蜀等式):若a,b是整数,且 gcd (a,b)=d,那么对于任意的整数x,y ...

  7. 扩展欧几里得算法及贝祖定理的证明

    欧几里得算法 公式表述: g c d ( a , b ) = g c d ( b , a % b ) gcd(a,b)=gcd(b,a\%b) gcd(a,b)=gcd(b,a%b) 证明: a a ...

  8. 贝祖定理及其逆定理的几种证明

    文章目录 前言 贝祖定理 贝祖定理的证明 1.整除方法 2.辗转相减法 3.归纳法 贝祖定理逆定理的证明 内容 证明 总结 前言 第一次写CSDN的博客,因为我是学数学的,也学一些代码但是不多,所以文 ...

  9. python【数据结构与算法】贝祖定理简单讲解

    文章目录 1 概念 题目举例: 2 代码 1 概念 a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,!!!---->>>可以推出结论:特别 ...

  10. LeetCode 365. 水壶问题

    365. 水壶问题 题目链接-365. 水壶问题 解题思路 裴蜀定理 裴蜀等式:若a,ba,ba,b是整数,且gcd(a,b)=dgcd(a,b)=dgcd(a,b)=d,那么对于任意的整数x,yx, ...

最新文章

  1. 恼人的函数指针(二)
  2. 20岁以后的男人应该知道的一些事,看一看吧
  3. php auth和rbac区别,php中比rbac更好的权限认证的方式auth类认证
  4. [tp5] thinkPHP5-渲染模板的方式
  5. 了解JVM运行时的内存分配
  6. 需求分析模板_看完总经理做的公司财务经营分析报告,怪不得人家能拿年薪150万...
  7. stm32f407 spi3 mosi没有输出_正点原子STM32F407探索者开发板资料连载第56章 USB 读卡器实验
  8. css3中定义required,focus,valid和invalid样式
  9. matlab现值与终值函数_个人家庭投资理财基础(二 单利、复利、终值、现值、内部收益率)...
  10. 威联通(NAS)搭建个人音乐中心
  11. 妇产科护理学复习重点
  12. 复杂网络作业二:第一题——Wikipedia vote网络的基本分析
  13. 会计专业计算机工具,会计工作需要用哪些工具
  14. 基于BP神经网络算法的性别识别
  15. 有关mean iou 言简意赅的介绍 及python 代码实现
  16. 基于V4L2的视频驱动开发(2
  17. 全国程序员高考卷,开始答题!
  18. 帕萨特加载模式启用怎么解除_关闭帕萨特自动启停功能的方法
  19. nginx reload和reopen
  20. Revit二开-设备连接(以消火栓为例)

热门文章

  1. 戴尔电脑cpu温度过高怎么办
  2. 学习笔记:Java 并发编程②_管程
  3. 嘉兴桐乡资格考证培训-教师证笔试科二必考冷门知识点整理
  4. 649 Dota2 参议院
  5. js将数据转换为整数
  6. 学计算机女生找不到男朋友,很多漂亮的女生,找不到男朋友,都躲不开这四个原因...
  7. 让办公管理如影随形的移动OA系统
  8. HDU-2085核反应堆
  9. (Mac/Windows)在终端中用finder/explorer打开文件夹的技巧
  10. Excel2016中如何取消设置的筛选条件