3水杯倒水问题

本文介绍了如何解决三杯水问题,初始时C杯满,AB为空。通过两种方法探讨解决方案:一是利用数论中的扩展欧几里得算法,二是通过模拟倒水过程并使用BFS枚举所有可能状态,适用于小容量杯子的情况。
摘要由CSDN通过智能技术生成
问题:

给出三个杯子的容量ABC , 其中刚开始时C杯是满的,AB是空的。
现在在保证不会有漏水的情况下进行如下操作:
将一个杯子x的水倒到另一个杯子y中,如果x空了或者y满了就停止(满足其中一个条件才停下)
现问C中水量有多少种可能性(A,B,C为非负整数)

解法1:数论,扩展欧几里得

待补充

解法2:模拟倒水过程,BFS枚举所有情况

只适用杯子容量不是很大的情况。

#include <cstdio>
#include <queue>

using namespace std;

struct situation{
   
    int cup[3];
    situation(int x, int y, int z){
   
        cup[0] = x;
        cup[1] = y;
        cup[2] = z;
    }
};

int volume[3], ans = 0;
queue<situation> q;
bool visted[105][105][105
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值