问题:
给出三个杯子的容量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