泊松分酒(深搜)

2021-08-15 13:44:36 字數 1881 閱讀 1792

泊松是法國數學家、物理學家和力學家。他一生致力科學事業,成果頗多。有許多著名的公式定理以他的名字命名,比如概率論中著名的泊松分布。

有一次閒暇時,他提出過乙個有趣的問題,後稱為:「泊松分酒」。在我國古代也提出過類似問題,遺憾的是沒有進行徹底探索,其中流傳較多是:「韓信走馬分油」問題。

有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,6公升容器中的油量

第一行表示初始狀態,第二行表示把12公升倒入8公升容器後的狀態,第三行是8公升倒入5公升,...

當然,同乙個題目可能有多種不同的正確操作步驟。

本題目的要求是,請你編寫程式,由使用者輸入:各個容器的容量,開始的狀態,和要求的目標油量,程式則通過計算輸出一種實現的步驟(不需要找到所有可能的方法)。如果沒有可能實現,則輸出:「不可能」。

例如,使用者輸入:

12,8,5,12,0,0,6

使用者輸入的前三個數是容器容量(由大到小),接下來三個數是三個容器開始時的油量配置,最後乙個數是要求得到的油量(放在哪個容器裡得到都可以)

則程式可以輸出(答案不唯一,只驗證操作可行性):

12,0,0

4,8,0

4,3,5

9,3,0

9,0,3

1,8,3

1,6,5

每一行表示乙個操作過程中的油量狀態。

**:

#include #include #include #include using namespace std;

bool visited[1000000];

int tot_v;

int v[3],c[3],c0;

bool finished;

stack path;

void dfs(int v1,int v2,int v3)

v[0]=v3,v[1]=v1,v[2]=v2;

for(int i=0; i<3; ++i)

else

dfs(v[1],v[2],v[0]);

if(finished)

v[0]=v3,v[1]=v1,v[2]=v2;}}

}int main()

if(first)

else

printf("\n%d,%d,%d",a[2],a[1],a[0]);

}return 0;

}

泊松分酒 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...

java實現分酒(泊松分酒)

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

趣味演算法之泊松分酒

有乙個12品脫 pint 的酒瓶,裡面裝滿葡萄酒,另有8品脫和5品脫的瓶子各乙個。問如何從中分出6品脫的酒出來?傳說泊松年輕時成功解決了該問題,勾起了他對數學的興趣而投身數學研究,因此該問題被稱為泊松分酒問題。另外這個問題又被稱為分油問題啦,分水問題啦等等。小學的時候在一本 十萬個問什麼 數學卷 中...