韓信走馬分油

2022-02-02 09:27:41 字數 1322 閱讀 2819

首先定義一套規則:

題目中的瓶子總共有三種,最大的a,中等的b,最小的c,我們規定:

最大的瓶子只能往中等的瓶子倒;(若中等的瓶子為空)

中等的瓶子只能往最小的瓶子倒;(若最小的瓶子不滿)

最小的瓶子只能往最大的瓶子倒;(若最小的瓶子已滿)

145.韓信走馬分油 (15分)

c時間限制:3000 毫秒 | c記憶體限制:3000 kb

題目內容:

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

中著名的泊松分布。 有一次閒暇時,他提出過乙個有趣的問題,後稱為:「泊松分酒」。在我國古代也提出過類似問題,遺憾

的是沒有進行徹底探索,其中流傳較多是:「韓信走馬分油」問題。 有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公升,...

當然,同乙個題目可能有多種不同的正確操作步驟。 本題目的要求是,請你編寫程式,由使用者輸入:各個容器的容量,開始的

狀態,和要求的目標油量,程式則通過計算輸出是否可能分成功-「y」,「n」。

例如,使用者輸入:

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

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

哪個容器裡得到都可以) 則程式可以輸出「y」

輸入描述

各個容器的容量,開始的狀態,和要求的目標油量

輸出描述

是否可能分成功-「y」,「n」

輸入樣例

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

輸出樣例

y

#include int

main()

else

}if(cc

else

}if(cc ==c)

else

}if(aa == t || bb == t || cc ==t)

if(aa == a && bb == b && cc == c)

} return0;

}

view code

韓信走馬分油,A 啟發式搜尋

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

小孩分油問題

1.問題描述 兩個小孩去打油,一人帶了乙個一斤的空瓶,另乙個帶了乙個七兩 乙個三兩的空瓶。原計畫各打一斤油,可是由於所帶的錢不夠,只好兩人合打了一斤油,在回家的路上,兩人想平分這一斤油,可是又沒有其它工具,試僅用三個瓶子 一斤 七兩 三兩 精確地分成兩個半斤油來。2.演算法設計 假設狀態a x1,x...

程式碎片 分油問題 bfs

這個問題是看演算法精華版時候看見的,人家的演算法看了很頭大,自己寫一遍後覺得清楚多了 using system using system.collections.generic using system.linq using system.text using system.windows.form...