zoukankan      html  css  js  c++  java
  • 【leetcode】365. Water and Jug Problem

    题目描述:

    You are given two jugs with capacities x and y litres. There is an infinite amount of water supply available. You need to determine whether it is possible to measure exactly zlitres using these two jugs.

    Operations allowed:

    • Fill any of the jugs completely.
    • Empty any of the jugs.
    • Pour water from one jug into another till the other jug is completely full or the first jug itself is empty.

    解题分析:

    这是我本科时算法课上到一道经典题。两个瓶子可能量出的水是两个瓶子容量最大公约数的倍数。所以只要判断z是否可以被x,y的最大公约数整除即可。

    具体代码:

     1 public class Solution {
     2       public static boolean canMeasureWater(int x, int y, int z) {
     3         int n=Math.max(x, y);
     4         int m=Math.min(x, y);
     5         x=n;
     6         y=m;
     7         if(z>x)
     8             return false;
     9         if(z==x||z==y)
    10             return true;
    11         n=fun(x,y);
    12         return z%n==0;
    13     }
    14     //求x,y的最大公约数
    15     public static int fun(int x,int y){
    16         if(x%y==0)
    17             return y;
    18         while(x%y!=0){
    19             int m=Math.max(x-y, y);
    20             int n=Math.min(x-y, y);
    21             x=m;
    22             y=n;
    23         }
    24         return y;
    25     }
    26 }
  • 相关阅读:
    理财––股票
    API -- 图书
    PowerBuilder -- 数字金额大写
    CSS -- 未解之疑
    CSS -- position
    PowerBuilder -- 条码打印
    PowerBuilder -- 日期
    SQLServer -- SQL Server Database Error: 内部 SQL Server 错误
    Oracle -- 连接每行的内容
    性能优化
  • 原文地址:https://www.cnblogs.com/godlei/p/5614992.html
Copyright © 2011-2022 走看看