算法分析——N個蘋果放在N個盤子里的問題


問題的描述:現在有N個一模一樣的蘋果,要放在編號為1、2、3……、N的盤子里(假設盤子足夠大,能放下所有的蘋果),問一共有多少種放法?

 

算法分析:

用符號F(i,j)表示i個蘋果放在j個盤子里的放法數

如果1號盤子里沒有蘋果,則i個蘋果要放在剩余的j-1個盤子里

如果1號盤里有1個蘋果,則剩余的i-1個蘋果放在剩余的j-1個盤子里

如果1號盤里有2個蘋果,則剩余的i-2個蘋果放在剩余的j-1個盤子里

以此類推

如果1號盤里有i-1個蘋果,則剩下的1個蘋果放在j-1個盤子里

如果1號盤里有i個蘋果,則剩下的j-1個盤子里沒有蘋果

 

於是得到以下的關系式

F(i,j)=F(i,j-1)+F(i-1,j-1)+F(i-2,j-1)+……+F(1,j-1)+F(0,j-1)

由上面的式子可以得出

F(i-1,j)=F(i-1,j-1)+F(i-2,j-1)+……+F(1,j-1)+F(0,j-1)

回代到①可知

F(i,j)=F(i,j-1)+F(i-1,j)

 

另由定義可知,

F(i,1)=1

F(1,i)=i

 

根據式子③④⑤,推測F(i,j)的計算公式為

F(i,j)=C(i,i+j-1) 注:C(M,N)表示組合數,表示N個里面選M的個數。組合數的計算公式這里不描述了

 

下面用數學歸納法證明式子⑥的正確性

證明:

F(i,1)=C(i,i+1-1)=C(i,i)=1 式子④滿足式子⑥

F(1,i)=C(1,1+i-1)=C(1,i)=i 式子⑤滿足式子⑥

 

假設F(i,j-1)、F(i-1,j)滿足式子⑥

F(i,j-1)=C(i,i+j-1-1)=C(i,i+j-2)

F(i-1,j)=C(i-1,i-1+j-1)=C(i-1,i+j-2)

 

則由式子③可知

F(i,j)=F(i,j-1)+F(i-1,j)=C(i,i+j-2)+C(i-1,i+j-2)=C(i,i+j-1) 滿足式子⑥

 

由此證明式子⑥的正確性

 

故計算公式為

F(i,j)=C(i,i+j-1)

 

那么

3個蘋果放在3個盤子里的放法數為F(3,3)=C(3,3+3-1)=C(3,5)=10

2個蘋果放在4個盤子里的放法數為F(2,4)=C(2,2+4-1)=C(2,5)=10

7個蘋果放在7個盤子里的放法數為F(7,7)=C(7,7+7-1)=C(7,13)=1716

10個蘋果放在10個盤子里的放法數為F(10,10)=C(10,10+10-1)=C(10,19)=92378

 

N個蘋果放在N個盤子里的放法數為F(N,N)=C(N,2N-1)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM