寫在前面:
泊松分酒:
法國著名數學家波瓦松在青年時代研究過乙個有趣的數學問題:假設某人有12品脫的啤酒一瓶,想從中倒出六品脫,但是恰巧身邊沒有6品脫的容器,僅有乙個8品脫和乙個5品脫的容器,怎樣倒才能將啤酒分為兩個6品脫呢?現在,請你設計乙個程式,可以根據輸入的滿瓶容量(a),和兩個空瓶的容量(b和c)對倒,獲得最終需要的容量(d)。
上週考筆試,有道題可能出現,想了n久也不會。最後考試中雖然沒考它,但是突然就想明白了。
/*** @discription 酒瓶是8公升酒,有兩個杯,分別為3公升和5公升,現在想得到兩杯4公升的酒。
* 腫麼分這瓶酒啊?
*/void text()
/***
* 倒酒方法
* @param i 盛酒
* @param j 倒酒
* @param wine 三個容器中酒量的陣列
* @param cup 酒瓶和兩個杯子容量的陣列
* @param sunxu 酒瓶和兩個杯子順序的陣列
* @param n 迴圈次數
* @param d 要得到的酒量
* @return
*/int daoba(int i,int j,intwine,intcup,intsunxu,int n,int d)
//第一杯接滿,第二杯倒空
}else if(wine[j]+wine[i]==cup[i])
return n;
}
/*** 分酒方法
* 1.先將杯子排序,大杯子放前面,小杯子放後面
* 2.酒瓶的酒先倒入大杯子
* 3.大杯子的酒倒入小杯子
* 4.小杯子酒倒入瓶中
* 5.如果大杯子有酒,那麼將其倒入小杯子後再將瓶中酒倒入大杯子
* 6.重複此過程,直到其中兩個容器中都有d公升酒
* @param a 酒瓶容量
* @param b 第乙個杯子
* @param c 第二個杯子
* @param d 要得到的酒量
*/void fenjiu(int a,int b,int c,int d);
int cup=;
int sunxu=;
int n = 0;
int timeo = 0;//執行次數
//排列杯子
if(cup[1]2)
if(wine[i]!=0&&wine[j]!=cup[j])
timeo++;}}
system.out.println(timeo);
}
寫在後面:
後來網上搜,正解,也就是最優解是通過廣度搜尋演算法得到的。
這個,等有靈感了再寫。
突然覺得演算法也挺好玩兒的啊!
*****************************格嘰格嘰*****************************
「好男人不會讓心愛的女人受一點點傷」————張赫宣唱的真不錯!是吧?lysh
泊松分酒 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...
趣味演算法之泊松分酒
有乙個12品脫 pint 的酒瓶,裡面裝滿葡萄酒,另有8品脫和5品脫的瓶子各乙個。問如何從中分出6品脫的酒出來?傳說泊松年輕時成功解決了該問題,勾起了他對數學的興趣而投身數學研究,因此該問題被稱為泊松分酒問題。另外這個問題又被稱為分油問題啦,分水問題啦等等。小學的時候在一本 十萬個問什麼 數學卷 中...