1. 程式人生 > >有重複組合公式及其證明方法

有重複組合公式及其證明方法

有重複組合公式如下:

若在n種元素中有重複的選擇r個元素的公式:

Cn+r1rC_{n+r-1}^{r}

這個公式的證明有很多種方法,這裡只選取最容易理解的方式進行證明:

證明如下:

把n種元素當成n個順序擺放的盒子,r是r個完全相同的球,這樣從n種元素中有重複取r個元素的方法就轉化成,把r個同質球放入n個盒子的方法

為什麼可以這樣呢,想想,把一個球放到第i個盒子就相當於從n種元素中我們取的第i種元素,如果有多個球放在第i個盒子中,相當於從n個元素中重複了取了第i種元素

空間中n+1條‘|’把空間分成n個盒子

舉個例子n=6,也就是6個盒子
|\qquad|\qquad|\qquad|\qquad|\qquad|\qquad|

那麼我們往裡面放球用’*'表示
則有
| * | * * * * ||* * * ||*|
我們發現
除去兩邊邊界的 |
實際的擺放方法就是n-1個 | 和 r 個* 的不同擺放方式

所以共有n+r1n+r-1個位置
我們從中選擇r個位置即可

因此得到公式

Cn+r1rC_{n+r-1}^{r}

相關推薦

重複組合公式及其證明方法

有重複組合公式如下: 若在n種元素中有重複的選擇r個元素的公式: Cn+r−1rC_{n+r-1}^{r}Cn+r−1r​ 這個公式的證明有很多種方法,這裡只選取最容易理解的方式進行證明: 證明如下: 把n種元素當成n個順序擺放的盒子,r是r個完全相同的球,這樣

約瑟夫環數學遞推公式及其證明

對於約瑟夫問題,今天看到了一篇好帖子,是用數學方法處理的,感覺還不錯的 無論是用連結串列實現還是用陣列實現都有一個共同點:要模擬整個遊戲過程,不僅程式寫起來比較煩,而且時間複雜 度高達O(nm),當n,m非常大(例如上百萬,上千萬)的時候,幾乎是沒有辦法在短時間內出結果的

JS判斷一個數組中是否重複值的三種方法

參考 http://superivan.iteye.com/blog/1131328 var ary = new Array("111","22","33","111"); var s = ary.

重複元素的組合

字典序從小到大 #include<cstdio> #include<algorithm> using namespace std; bool vis[30]; int n,r,arr[30],a[30],had; bool check(int now) {

函式中為什麼不要多次return以及其解決方法

函式中隨處return,是造成我們資源洩露和程式死鎖的主要根源。很多同志寫過類似的程式碼,函式中建立了和引用了多個資源,中間使用的過程中出錯了,程式return,經典的程式碼是這樣的: void fun()   { Lock(mutex); mem 

求逆元求組合公式取餘)

https://blog.csdn.net/weixin_40149887/article/details/79861045 求解方法: 先算出n!%p、m!%p、(n-m)!%p,用fac[i]表示 i!%p 的值 因為組合數取模是(n!)/(m!(n-m)!)%p,因此需要計

SQLite左外連線查詢重複欄位處理方法

SQLite左外連線查詢有重複欄位處理方法 sqlite在連表查詢過程中,當主表和副表有相同的欄位時,縱然結果正確,但是在處理查詢結果時,在取主表的欄位但會返回副表的欄位值。 現有表ZWAMESSAGE和表ZWAMEDIAITEM,其中兩表中有相同的三個欄位, 執行下面語句

linux上的檔案管理類命令哪些,常用的使用方法及其相關例項演示

Linux 一切皆檔案。個人理解 在linux下的命令操作都算是對檔案操作 那麼檔案管理命令類命令可以分為下面幾類 目錄操作: 特殊目錄解釋: . 代表此層目錄;.. 代表上一層目錄;- 代表前一個目錄;~ 代表當前使用者的主資料夾 也可以稱為家目錄

js判斷陣列中是否重複值得三種方法

方法一: function isRepeat() { var ary = new Array("111", "22", "33", "111"); var s = ary.join(",") + ","; for (var i = 0; i <

重複元素排列組合問題java簡單方法

** 例:現有黑、白、紅三種顏色的小球各三個,需要將其排成一條直線,要求任意連續排列的三個小球不可以是同一種顏色,試求排列的方案共有多少種? 此類涉及重複元素的有一個簡便方法。 所有元素全排

js判斷數組裡是否重複元素的方法

// 方法一,正則判斷------本人已經測試過,其他的沒有測試過。 var ary = new Array("111","ff","222","aa","222"); alert(mm(ary)) // 驗證重複元素,有重複返回true;否則返回false function mm(a) {    retu

js使用indexOf和lastIndexOf判斷陣列是否重複值的簡單方法

回顧js基礎時發現了indexOf和lastIndexOf的概念,想到了這種方式。 indexOf() 方法可返回某個指定的字串值在字串中首次出現的位置,是正向查詢。 lastIndexOf() 方法可返回一個指定的字串值最後出現的位置,是逆向查詢。 基本思路:inde

髒讀 幻讀 不可重複及其解決方法

一個事務讀到另外一個事務還沒有提交的資料,我們稱之為髒讀。解決方法:把事務隔離級別調整到READ COMMITTED 一個事務先後讀取同一條記錄,但兩次讀取的資料不同,我們稱之為不可重複讀。解決方法:把事務隔離級別調整到REPEATABLE READ。 一個事務先

算法 - 兩個序數組合並成一個序數組

== out while循環 有序數組 oid 是否 打印 sort nbsp //兩個有序數組的合並函數 public static int[] MergeList(int a[],int b[]) { int result[];

ubuntu14.04下 安裝matlabR2015b遇到的一些問題及其解決方法

cal abr 問題 它的 文件夾 打開 pen atl usr 問題1:錯誤提示關於未取得權限,不能再/crack/bin文件中復制文件到安裝matlab的/usr/bin文件中? 采取解決方法: 再終端裏輸入 sudo nautilus,在彈出文件夾裏即可進行相應操作。

擴展gcd求解二元不定方程及其證明

std iostream 不定 article include %d content 及其 變形 #include <cstdio> #include <iostream> using namespace std; /*擴展gcd證明 由於當

myEclipse開發內存溢出解決辦法myEclipse調整jvm內存大小java.lang.OutOfMemoryError: PermGen space及其解決方法

try 配置 及其 windows logs 環境 ner log reference 摘要: tomcat部署多個項目後,啟動tomcat正常,訪問項目時卻會出現該錯誤在網上查了查又試了好幾次,才解決,將解決方法記錄下來,以方便以後查看或讓遇到同樣問題的朋友有個參考 P

Math類概述及其成員方法

平方根 向上 .com size print main 最大整數 post art Math 類包括用於運行基本數學運算的方法,如初等指數、對數、平方根和三角函數,這個類尋常開發中用的不多,可是在某些需求上會用到,比方求二個用戶年齡的相差多少歲,這會用到Math類中的方

常用類及其常用方法

sqrt 運行 compare float com n) 最大 pac util 1.String /* * String 的常用方法 * 1. String concat(String str) 將指定字符串連接到此字符串的結尾。 * 2. int length()

hdu 1799 (循環多少次?)(排列組合公式

oid mil 每次 .cn 可能性 ble include 復制 三次 循環多少次? Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)