隔板法就是在n個元素間插入(b-1)個板,即把n個元素分成b組的方法。c(n-1,b-1)
隔板法必須滿足三個條件:
這n個元素必須相同,(2)所分成的每一組至少分得乙個元素,(3)分成的組別彼此差異。
例如:某校組建一球隊需16人,該校共10個班級,且每個班至少分配乙個名額,共有幾種情況。c(16-1,10-1)。2.對
n件相同物品(或名額)分給
m個人(或位置),允許若干個人(或位置)為空的問題
,可以看成將這
n件物品分成
m組,允許若干組為空的問題.將
n件物品分成
m組,需要
m-1塊隔板,將這
n件物品和
m-1塊隔板排成一排,佔
n+m-1
位置,從這
n+m-1
個位置中選
m-1個位置放隔板,因隔板無差別,故隔板之間無序,是組合問題,故隔板有
cn+m-1 m-1
種不同的方法,再將物品放入其餘位置,因物品相同無差別,故物品之間無順序,是組合問題,只有
1種放法,根據分步計數原理,共有
cn+m-1 m-1×1=cn+m-1 m-1
種排法
3.求方程x1+x2+…+xk=n的非負整數解或正整數解
(1)方程x1+x2+x3+x4=10的正整數解有多少組?
(2)方程x1+x2+x3+x4=10的非負整數解有多少組?
解:(1)轉化為10個相同的小球裝入4個不同的盒子,每盒至少有乙個,有c(10-1,4-1)=84種。
轉化為10個相同的小球裝入4個不同的盒子,可以有空盒,有c(10+4-1,4-1)種。
4.求方程x1+x2+…+xm=k(0<=xi<=n)的非負整數解的方案數。
解:有限制條件,用容斥搞一搞。
對於指定t個盒子(例如1,2,3,···,t號盒子)中的球數至少為n+1個球的方法等同於將(x-t*(n+1))個球放入y個盒中,每個盒中至少0個球的放法,即(x-t*(n+1))個球放入y個盒子,再在指定的t個盒中放入n個,為c(x-t*(n+1)+y-1,y-1)。
根據容斥原理,每個盒子至多n個球的方法為總數-所有指定乙個盒子的球數大於n的方法+所有指定兩個盒子的球數大於n的方法-所有三個盒子的球數大於n的方法+
即為c(k+m-1,m-1)-c(m,1)*c(k-(n+1)+m-1,m-1)+c(m,2)*c(k-2*(n+1)+m-1,m-1)+···+(-1)^t*c(m,t)*c(k-t*(n+1)+m-1,m-1)+···
其中t屬於1到k/(n+1)的閉區間。c(k-t*(n+1)+m-1,m-1)的k-t*(n+1)+m-1>=m-1,一化簡就可得到k/(n+1)。
矩陣乘法經典應用之置換
學習用矩陣做置換的過程很有趣,我遇到的置換問題最開始的思路就向矩陣發展了,然而很不幸,那題時間卡的緊,用矩陣是超時的做法 反正我沒過 不過我也意外的學習了這樣的方法 經典的置換矩陣 比如 1 2 3 4 2 4 1 3 設轉換矩陣是a。給出置換方法 表示第所以 這是那一道題 注 下面的 是超時的,我...
歸併演算法經典應用 求解逆序數
在之前介紹線性代數行列式計算公式的時候,我們曾經介紹過逆序數 我們在列舉出行列式的每一項之後,需要通過逆序數來確定這一項符號的正負性。如果有忘記的同學可以回到之前的文章當中複習一下 線性代數行列式 如果忘記呢,問題也不大,這個概念比較簡單,我想大家很快就能都搞清楚。面試題當 現。我們先來回顧一下逆序...
ArrayList用法 (經典)
system.collections.arraylist類是乙個特殊的陣列。通過新增和刪除元素,就可以動態改變陣列的長度。一 優點 1。支援自動改變大小的功能 2。可以靈活的插入元素 3。可以靈活的刪除元素 二 侷限性 跟一般的陣列比起來,速度上差些 三 新增元素 1 publicvirtualin...