博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
泊松分酒
阅读量:5462 次
发布时间:2019-06-15

本文共 822 字,大约阅读时间需要 2 分钟。

为了方便说明,将容量为12品脱,8品脱,5品脱瓶子分别称为大瓶子,中瓶子,小瓶子。按照下面2种规则中的如何一种可以解决这个问题:

规则:

1. 大瓶子只能倒入中瓶子

2. 中瓶子只能倒入小瓶子

3. 小瓶子只能倒入大瓶子

4. 小瓶子只有在已经装满的情况下才能倒入大瓶子

5. 若小瓶子被倒空,则无论中瓶子是否满,应马上从中瓶子倒入小瓶子

   

之所以要规定倒酒的顺序是为了防止状态重复。而根据这5条规则,大瓶子每次倒入中瓶子的酒总是8品脱,小瓶子每次倒入大瓶子的酒总是5品脱。(请结合下面的表来理解这句话,理解这点很重要)

   

有了上面的规定后,倒酒的顺序就确定下来了:

12品脱瓶子

8品脱瓶子

5品脱瓶子

  

12

0

0

初始状态

4

8(倒进)

0

  

4

3

5(倒出)

  

9

3

0

  

9

0

3

  

1

8(倒进)

3

  

1

6

5(倒出)

搞到6品脱了

6

6

0

完成

  

设大,中,小三个瓶子容量分别是C1,C2,C3,需要倒出的容量是R

则实际上要是我们能将容量为R的酒倒到中瓶子和小瓶子中就可以啦(有点废话)

   

设大瓶子倒满中瓶子X次,从小瓶子中倒入大瓶子Y次。

那么显然由大瓶子累次倒入中瓶子和小瓶子总共C2*X的酒。而由小瓶子倒入大瓶子一共有C3*Y的酒。

那么最终,小瓶子和中瓶子剩余的酒显然就是 C2*X - C3*Y

   

因此,泊松分酒问题实质上转化为下面的不定方程是否有正整数解的问题:

   

C2*X - C3*Y = R

   

对于我们的问题,

C1=12,C2=8,C3=5,R=6

   

倒酒规则实质上相当于解下面这个不定方程:

8X - 5Y = 6  ( 限定 X > 0 ,Y > 0 )

最小整数解是 X=2,Y= 2

   

表示倒满8品脱的瓶子2次,5品脱的瓶子倒空2次

那么8品脱的瓶子和5品脱的瓶子剩酒总量必然是 8 * 2 – 5 * 2 = 6

 

转载于:https://www.cnblogs.com/yxx123/p/5227273.html

你可能感兴趣的文章
感性的人最理性,理性的人很感性
查看>>
python
查看>>
乐观复制算法-6 多Master的operation transfer系统
查看>>
ubuntu16.04 安装java
查看>>
矩阵幂求和
查看>>
eclipse下开发一个简单的strom程序
查看>>
MyEclipse快捷键大全
查看>>
net伪静态重写Url
查看>>
Spring和SpringMVC的区别
查看>>
定时器的拓展
查看>>
Java输出文件到本地(输出流)
查看>>
WebService学习记录
查看>>
复习 枚举
查看>>
MATLAB中的运算符和特殊字符说明
查看>>
EX——4 RPG游戏·改 (圣杯战争不完全版)
查看>>
idea创建Maven工程很慢的解决办法
查看>>
工作流引擎activiti入门
查看>>
cowboy rest
查看>>
setChecked方法触发onCheckedChanged监听器问题
查看>>
vim php代码规范
查看>>