波松瓦酒的分酒趣題

2022-05-05 07:36:07 字數 986 閱讀 8693

法國著名數學家波瓦松在表年時代研究過乙個有趣的數學問題:某人有12品脫的啤酒一瓶,想從中倒出6品脫,但他沒有6品脫的容器,僅有乙個8品脫和5品脫的容器,怎樣倒才能將啤酒分為兩個6品脫呢?

*問題分析與演算法設計

將12品脫酒 8品脫和5品脫的空瓶平分,可以抽象為解不定方程:

8x-5y=6

其意義是:從12品脫的瓶中向8品脫的瓶中倒x次,並且將5品脫瓶中的酒向12品脫的瓶中倒y次,最後在12品脫的瓶中剩餘6品脫的酒。

用a,b,c代表12品脫、8品脫和5品脫的瓶子,求出不定方程的整數解,按照不定方程的意義則倒法為:

a -> b -> c ->a

x y倒酒的規則如下:

1) 按a -> b -> c ->a的順序;

2) b倒空後才能從a中取

3) c裝滿後才能向a中倒

按以上規則可以編寫出程式如下:

*程式說明與注釋

#include

void getti(int a,int y,int z);

int i; /*最後需要分出的重量*/

int main()

void getti(int a,int y,int z) /*a:滿瓶的容量 y:第乙個空瓶的容量 z:第二個空瓶的容量*/

/*如果第一瓶為空,則將滿瓶倒入第一瓶中*/

else if(c==z)

/*如果第二瓶滿,則將第二瓶倒入滿瓶中*/

else if(b>z-c) /*如果第一瓶的重量》第二瓶的剩餘空間*/

/*則將裝滿第二瓶,第一瓶中保留剩餘部分*/

else /*否則,將第一瓶全部倒入第二瓶中*/

printf(" %4d %4d %4d\n",a,b,c);}}

*思考題

上面的程式中僅給出了兩種分酒的方法,並沒有找出全部的方法。請設計新的演算法,找出全部的分酒方法,並找出一種倒酒次數最少的方法。

java實現分酒(泊松分酒)

寫在前面 泊松分酒 法國著名數學家波瓦松在青年時代研究過乙個有趣的數學問題 假設某人有12品脫的啤酒一瓶,想從中倒出六品脫,但是恰巧身邊沒有6品脫的容器,僅有乙個8品脫和乙個5品脫的容器,怎樣倒才能將啤酒分為兩個6品脫呢?現在,請你設計乙個程式,可以根據輸入的滿瓶容量 a 和兩個空瓶的容量 b和c ...

泊松分酒 15

題目內容 有3個容器,容量分別為12公升,8公升,5公升。其中12公升中裝滿油,另外兩個空著。要求你只用3個容器操作,最後使得某個容器中正好有6公升油。下面的列表是可能的操作狀態記錄 12,0,0 4,8,0 4,3,5 9,3,0 9,0,3 1,8,3 1,6,5 每行3個資料,分別表示12,8...

泊松分酒(深搜)

泊松是法國數學家 物理學家和力學家。他一生致力科學事業,成果頗多。有許多著名的公式定理以他的名字命名,比如概率論中著名的泊松分布。有一次閒暇時,他提出過乙個有趣的問題,後稱為 泊松分酒 在我國古代也提出過類似問題,遺憾的是沒有進行徹底探索,其中流傳較多是 韓信走馬分油 問題。有3個容器,容量分別為1...