设3个杯子的容量分别为a,b,c 最初只有第三个杯子装满了c升水,其他两个杯子为空。最少需要倒多少升水才能让某一个杯子中的水有d升,如果不行的话,尽量让某一个杯子的水接近d升。
由于水总量一定,两个杯子的水可以确定三个杯子的水。
由于每个杯子都可能接近d升,因此应该用一个数组来判断。
题目要求总共倒的水最少,用一个变量记录。
用优先队列广搜即可。
#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int maxn = 200 + 5;
int cup[3];
int vis[maxn][maxn];
int ans[maxn];
struct Node {
int v[3];
int dist;
friend bool operator < (const Node& n1, const Node& n2) {
return n1.dist > n2.dist;
}
};
void upDateAns(const Node& u) {
for(int i = 0; i < 3; i++) {
int v = u