分配问题---将八斤酒分成二等分的算法
来源:百度知道 编辑:UC知道 时间:2024/06/09 04:15:17
现有一个装满八斤酒的酒瓶,和两个分别可以装5斤和3斤酒的空瓶,问:怎么才能将八斤酒尽快分成二等份
哪位高手知道程序算法阿??
实际的解决方法我知道,可是不知如何能够用程序来实现,哪位高手帮忙给解答一下阿
哪位高手知道程序算法阿??
实际的解决方法我知道,可是不知如何能够用程序来实现,哪位高手帮忙给解答一下阿
波松分酒问题 C++求最优解.
/*
请设计程序解决“波松分酒问题”
问题如下:
某人有12品脱啤酒一瓶,想从中倒出6品脱,但他没有6品脱的容器,
仅有一个8品脱和一个5品脱的容器,怎样才能将啤酒分为两个6品脱?
抽象分析:
b = 大容器,也表示容积
s = 小容器,也表示容积
(f),(h),(e) 状态f=满, e=空, h=数字,表示容量
运算一: b(f) - s(e) => b(b - s), s(f)
变例 b(h) - s(e) => b(h - s), s(f)
运算二: b(e) + s(f) => b(s), s(e)
变例 b(h) + s(f) => b(f), s(s - b + h)
引出 b(f) - s(h)
b(h) - s(h)
b(e) + s(h)
b(h) + s(h)
如果以瓶中酒的数量为节点, 通过一次以上运算可达到节点之间认为连通.
此题可转化为一个有向图的搜索问题.
即找出.指定节点(12, 0, 0) 和 (6, 6, 0)之间的最小路径.
*/
#include <cstdio>
#include <deque>
#include <map>
#include <utility>
#include <queue>
static int big_max_value[] =
{
12, 8, 12
};
static int small_max_value[] =
{
8, 5, 5
};
st