a(n,m)為排列數公式。
c(n,m)為組合數公式。
意思是:在n個一模一樣的物品裡選出(滿)m個物品。
c(n,m)=c(n-1,m-1)+c(n-1,m)
注意:n 在下面,m在上面
1、可以理解為:
假設我們現在只有有n-1個物品,
第一種情況:我們可以在這n-1個物品之外再新增乙個新的物品(記為第n個),就要先在n-1個物品裡選m-1個,再加上第n個。
而這種方法所得的數量與c(n-1,m-1)是一樣的,於是我們要加上c(n-1,m-1)的數量。
第二種情況:假設我們並不想選新加進來的第n個物品,那就在原來的n-1個物品裡面選m個來湊成m個物品。於是我們要加上c(n-1,m)的數量。
那麼綜合起來,就是c(n,m)=c(n-1,m-1)+c(n-1,m)。
2、也可以理解為:
假設我們按位置來看,對每一位的物品只有選與不選兩種方案;
第一種方案:我們選這一位的物品。
那麼就留乙個位置給某個物品(可以理解為第m個物品),那麼就剩下m-1個位置,對吧?那就請在剩下的n-1個物品裡選擇m-1個物品補上空位就好了。那這種方案就有c(n-1,m-1)種可能。
第二種方案:我們不選這一位的物品。
那麼我們是不是要將這一位的物品排除掉?不選它嘛。那麼這m個空位就只能在n-1個物品裡面選咯。於是有c(n-1,m)種方案。
那麼綜合起來,就還是c(n,m)=c(n-1,m-1)+c(n-1,m)。
巧的是,這個遞推式子可以看做乙個楊輝三角。
所以c++裡寫作c(n,m)=c(n-1,m-1)+c(n-1,m),n代表行,m代表列。
部落格位址
組合數遞推式為:
c(k,n)=(n−k+1/k)*c(k−1,n)
它可以很明顯的用組合數公式證明,但是它的實際意義卻並不明顯。
為了更好理解,我們寫出組合數遞推式的等價形式:
c(k+1,n)=(n−k/k+1)*c(k,n)
推導過程:
0、我們知道組合數 c(k,n) 表示 n 個不同元素中選出 k 個元素的方法數。
1、我們如果已知 c(k,n) 的值,在每個被選中的 k 個元素的 組合,新增乙個沒有被選中的元素(沒有被選中的元素個數為 n−k ),
這樣就得到了 (n−k)*c(k,n) (這樣每個組合中有 k+1 個元素)。
所以推出:c(k+1,n)=(n−k/k+1)*c(k,n)
2、但是這樣選出的組合中有重複的情況:
例如形成的 k+1 個元素的組合 a1,a2,...,ak,ak+1 ,可能是
a1 新增了 a2,a3,...,ak,ak+1 形成的或者
a2 新增了 a1,a3,...,ak,ak+1 形成的或者
….........
ak 新增了 a1,a2,...,ak−1,ak+1 形成的或者
ak+1 新增了 a1,a,2...,ak−1,ak 形成的。
這樣對於每乙個 k+1 個元素的組合重複計數了 (k + 1)次,
所以需要除以 k+1 ,得到 c(k+1,n)= n−k/k+1 c(k,n) 。
c 排列組合排序 排列組合 組合數專題
書接上回,本期正男老師將帶大家梳理排列組合中組合數的相關考點,組合數考點可以細分為4類,分別為 分類數數問題 分組排序問題 塗色問題以及插棍問題。近六年高考真題中,組合數考點共涉及5道。組合數專題高考真題分布 組合數的定義以及公式如下圖所示。組合數定義 分類數數問題與排列問題中的窮舉問題相似,但分類...
排列組合實現
演算法 與網際網路 組合演算法 本程式的思路是開乙個陣列,其下標表示1到m個數,陣列元素的值為1表示其下標 代表的數被選中,為0則沒選中。首先初始化,將陣列前n個元素置1,表示第乙個組合為前n個數。然後從左到右掃瞄陣列元素值的 10 組合,找到第乙個 10 組合後將其變為 01 組合,同時將其左邊的...
排列組合 HNOI
我這方面比較水就只提供兩道題吧 1.hnoi2008 prison 監獄有連續編號為1.n的n個房間,每個房間關押乙個犯人,有m種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄此題略水,屬於hnoi送分題系列,用補集的思想可以輕鬆過。可能越獄...