T365、水壶问题

作者: 上行彩虹人 | 来源:发表于2020-04-30 19:12 被阅读0次

有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?
如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。
你允许:
装满任意一个水壶
清空任意一个水壶
从一个水壶向另外一个水壶倒水,直到装满或者倒空
示例 1: (From the famous "Die Hard" example)
输入: x = 3, y = 5, z = 4
输出: True
示例 2:
输入: x = 2, y = 6, z = 5
输出: False

问题可以转化为mx+ny==z,m和n是可正可负的整数,数学上已经证明如果x和y的最大公约数可以整除z,那么等式就可以成立。
辗转相除法求最大公约数:
用大数除以小数,小数作为下一轮的被除数,余数作为下一轮除数,一直循环到余数为0,最后的小数就是最大公约数。

    public boolean canMeasureWater(int x, int y, int z) {
        if(z<0||(x+y)<z)
            return false;
        if(z==0)
            return true;
        if(x<y){
            int t = x;
            x = y;
            y = t;
        }
        if(y==0)
            return x == z;
        while(x%y!=0){
            int t = x % y;
            x = y;
            y = t;
        }
        return z % y == 0;
    }

相关文章

  • T365、水壶问题

    有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水...

  • 水壶问题

    题目: 题目的理解: 起初设想的解决方式:(1)x和y的相差,求得所有相差的值,即每一个值与所有的值相减,直到不会...

  • 水壶问题通解

    有两个容量分别为a升和b升的水壶以及无限多的水。请判断能否通过使用这个两个水壶,从而可以得到恰好z升的水?你允许进...

  • 【中等】水壶问题

    1. 题目 有两个容量分别为 x升 和* y*升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到...

  • 365. 水壶问题

    【Description】有两个容量分别为 x升 和* y*升 的水壶以及无限多的水。请判断能否通过使用这两个水壶...

  • 365-水壶问题

    水壶问题 题目 有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到...

  • 365.水壶问题

    解题思路 裴蜀定理(或贝祖定理),说明了对任何整数a、b和它们的最大公约数d,关于未知数x和y的线性不定方程(称为...

  • 365. 水壶问题

    题目 有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升...

  • 生活点滴

    1——电水壶与小盆景 解决电水壶旁边的绿植用水问题,只要在电水壶下面加一个小托盘就行。女当家喜欢在电水壶中满水漫灌...

  • leetcode 365. 水壶问题

    这道题我没有提交,原因是我还不能完全理解。

网友评论

    本文标题:T365、水壶问题

    本文链接:https://www.haomeiwen.com/subject/clmtghtx.html