程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 排列組合-元素可重復的組合的問題

排列組合-元素可重復的組合的問題

編輯:編程解疑
元素可重復的組合的問題

有n個不同數,在其中取m個數組成一個集合,可重復取,有多少種取法,這個怎麼算呢?
如 0,1,2 三個數,取3個數的集合有
{0,0,0)
{0,0,1}
{0,0,2}
{0,1,1}
{0,1,2}
{0,2,2}
{1,1,1}
{1,1,2}
{1,2,2}
{2,2,2}

最佳回答:


前面的回答太繁瑣了。有一種更簡單的方法(隔板法)。
假設你要在n個數裡面重復取m次,就可以設想下面一種場景:取n+m-1個位置,其中n-1個位置放上隔板,其他的m個位置放上小球。這樣,m個小球就被隔板分成了n份(可能有一份中沒有小球的情況)。
從左到右的n份中的小球數目,就對應著原問題的n個數各取了多少次,總共m個小球,表示m次。
這樣,問題的答案就是n+m-1個數裡面取n-1個數,這個組合數。可以記作C(n+m-1,n-1)
例如3個數取3次,就有C(3+3-1, 3-1)=10種取法。
你舉出的{0,1,2}這種組合,對應著3個數各取1次,在隔板法裡就對應著"球-板-球-板-球",而(0,0,2)這種組合,就是“球-球-板-板-球”(0取了2次,對應左邊有2個球。1取了0次,對應中間兩個板之間沒有球。2取了1次,對應右邊有一個球)。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved