第n杯水;及重出江湖分析

紫鳳發表於2013-08-02

今日面試題:第n杯水

有一座金字塔,從上到下,第一層有一個杯子、第二層有兩個杯子,依次類推。對杯子進行編號,有如下的形狀:

1
2 3
4 5 6

每個杯子的容量為C升,從塔頂倒下L升水,當1號杯子滿了之後,會等量溢位到2號和3號杯子。當2號和3號滿了,2號溢位到4號和5號,3號溢位到5號和6號,注意5號接受來自兩個杯子的水。依次類推。給定C和L,請問,第n杯裡有多少水。

重出江湖分析

原題

n個色子,每個色子m面,每一面的值分別是1-m。你將n個色子同時拋,落地後將所有朝上面的數字加起來,記為sum。給定一個數字x,如果sum>x,則你贏。給定n,m,x,求你贏的概率。

  • 1<=n<=100
  • 1<=m<=10
  • m<=x< n*m

分析

這個題目的描述,是將具體的問題一般化了。掌握了,這個問題的分析,就可以對這類問題通吃。一個具體的情況是什麼呢?兩個色子,每個色子六面,同時拋,求朝上數字和大於某一個值的概率。這個情況比較簡單,兩個色子同時拋,一共36種情況,注意這裡有的和是相同的。此時,最少可以通過窮舉的方法,得到答案。但是本題中的意思,顯然是無法通過窮舉呢?那該如何分析呢?

n個色子,每個色子m面。則一共有m^n中情況(類比上面分析的36種情況)。在這些裡面,有多少個和是大於x的呢?假設,f(n,x)表示n個色子,所有朝上的數字和是x的情況數量。對於某一個色子,每一面朝上的概率是1/m。假設這個色子的k面朝上,1<=k<=m,則f(n,x) = sum{f(n - 1, x - k)} 1<=k<=m。遞迴的終止條件是,當只有一個色子的時候,f(1,k) = 1, 1<=k<=m,其他都是0

則最終的概率為(f(n, x + 1) + … + f(n, m*n)) / m^n。每一個大於x的和的可能情況數量之和除以總的情況數量。

以2個6面色子為例,驗證上面的公式。

情況數
2 1
3 2
4 3
5 4
6 5
7 6
8 5
9 4
10 3
11 2
12 1

取和大於10的概率,即2/36+1/36 = 3/36 = 1/12。

根據上面的公式,(f(2, 11) + f(2, 12)) / 12

  • f(2, 11) = f(1, 10) + f(1, 9) + f(1, 8) + f(1, 7) + f(1, 6) + f(1, 6) = 2
  • f(2, 12) = f(1, 11) + f(1, 10) + f(1, 9) + f(1, 8) + f(1, 7) + f(1, 6) = 1

則概率為3/12,與窮舉方法一致。

【分析完畢】

本文來自微信:待字閨中,2013-07-30釋出,原創@陳利人 ,歡迎大家繼續關注微信公眾賬號“待字閨中”。

相關文章