[算法][庞果网]倒水问题/量水问题

在庞果网的算法挑战中,涉及到一个倒水问题:利用两个容量为A和B的容器,目标是得到C升水。题目允许在无限水源下,通过将水从一个容器倒入另一个容器或清空容器,最终判断是否能获得C升水。输入为A、B、C三个整数,输出为布尔值表示能否实现。提供的解题思路和Java代码供参考。
摘要由CSDN通过智能技术生成

题目要求

有两个容器,容积分别为A升和B升,有无限多的水,现在需要C升水。
我们还有一个足够大的水缸,足够容纳C升水。起初它是空的,我们只能往水缸里倒入水,而不能倒出。
可以进行的操作是:
把一个容器灌满;
把一个容器清空(容器里剩余的水全部倒掉,或者倒入水缸);
用一个容器的水倒入另外一个容器,直到倒出水的容器空或者倒入水的容器满。
    问是否能够通过有限次操作,使得水缸最后恰好有C升水。

输入:三个整数A, B, C,其中 0 < A , B, C <= 1000000000
输出:0或1,表示能否达到要求。

函数头部:
c语言:1表示可以,0表示不可以
int can(int a,int b,int c);
c++语言: true表示可以,false表示不可以
bool can(int a,int b,int c);
java语言:true表示可以,false表示不可以
public class Main {
    public static boolean can(int a,int b,int c);
}

解题思路

这是一个典型的倒水问题/量水问题,使用欧几里得算法就可解出来。

这里有一篇文章给出了简单的倒水问题的解法,可以解决笔试面试里面一些简单的填空题,可以看一看:
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值