Advertisement

UVa 10603 填满倒水问题

阅读量:

设有三个容器,其容量分别标记为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;
    }
    };
    
    v

全部评论 (0)

还没有任何评论哟~