分配问题---将八斤酒分成二等分的算法

来源:百度知道 编辑: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