題:(1)5個0,4個1組成的字符串中,出現01或10的次數為4的不同字符串個數
(2)一般地,n個0,m個1組成的字符串中,出現01或10的次數為k的不同字符串個數
例如,10100011是一個滿足要求的字符串(這里10和01是可以重用的,例如,010算是出現1次01,出現1次10)
(這是剛剛考過的組合數學期末試題,表示沒能當場做出,選錯方法了- -我用了遞推法,寫出了遞歸式但是不會解,因為有n、m、k三個參數——這也許不是正確的方法)
----------------------
符號說明:
1)N01和N10分別表示字符串中01的個數和10的個數
2)N=N01+N10,表示字符串中01和10的總出現次數
3)C(n,m)表示n個不同元素中取m個元素的組合數
----------------------
(1)注意到:我們可以把字符串中連續的0用1個0替換而不改變N01和N10的個數(N01和N10分別表示字符串中01的個數和10的個數),同理也可以把字符串中連續的1用1個1替換,為敘述方便,稱得到的為原字符串的“模式”
比如,10100011的模式是10101
下面考慮有幾種可能的模式呢?
思路:我們考慮0的可能位置(考慮1也可以),如果0在左端,則對N01的貢獻為1;若在右端,則對N10的貢獻為1;若在中間(非端點),則對N10和N01的貢獻各為1,總貢獻為2
01或10出現次數為4,那么0在模式中出現的情況有以下幾種可能:
(1)中間沒有0——這不可能,因為即使兩端都出現0,01或10出現總次數也只有2
(2)中間有1個0——這1個0對N的貢獻為2,那么兩端必然都必須為0,這樣才會有N=4。模式為01010
(3)中間有2個0——這2個0對N的貢獻為4,兩端必然都必須為1,模式為10101
(4)中間有超過2個0——這不可能
總結起來只有兩種可能的模式:01010和10101
(還可以從模式的角度找規律,其實長為n的模式只有兩種,分別是以0開頭的01交替序列和以1開頭的01交替序列,而且這兩個模式對應的N是相同的,即包含01和10的總數是相同的。因此n和N之間構成了一一對應。n為偶數時,模式為0101…01或1010…10,對應N=n-1;n為奇數時,模式為0101…010或1010…101,對應N=n-1.所以總是有N=n-1,所以你告訴我N=4,那么對應的一定是長為5的兩個模式,這種方法似乎更簡單)
找到模式之后,怎么計算對應的字符串有多少個呢?
對模式01010,設“01010”的第1個0在原字符串代表x1個0,第2個0代表x2個0,第3個0代表x3個0,則有x1+x2+x3=5,不同的x1,x2,x3的取值對應的字符串是不同的,同樣每個符合模式01010的字符串也都對應了這樣一組正整數(x1,x2,x3),這是一一對應。求出這個不定方程的正整數解的個數就可以了,即為在5個相同的球之間插入2個隔板的方法數,是C(4,2)。同樣設“01010”的第1個1和第2個1在原字符串中分別代表y1個1和y2個1,有y1+y2=4,正整數解個數為C(3,1)
因此,由乘法原則,這種模式對應的字符串有C(4,2)* C(3,1)=18個
類似可以求出10101對應的字符串有C(4,1)* C(3,2)=12個
所以,有30個滿足要求的字符串。
(2)一般情況,方法是一樣的
n個0,m個1,出現01或10的次數為k
k為偶數時,可能的模式有兩個:
一個是1010…01,其中有k/2個0, k/2+1個1.對應的不定方程為:
X1+ X2+ …+Xk/2=n
y1+ y2+ …+yk/2+1=m
解的個數是C(n-1,k/2-1)*C(m-1,k/2)
另一個是010…010,其中有k/2+1個0, k/2個1.對應的不定方程為:
X1+ X2+ …+Xk/2+1=n
y1+ y2+ …+yk/2=m
解的個數是C(n-1,k/2)*C(m-1,k/2-1)
總的符合要求的字符串數為C(n-1,k/2-1)*C(m-1,k/2)+ C(n-1,k/2)*C(m-1,k/2-1)
k為奇數時,可能的模式也有兩個:
一個是010…01,其中有(k+1)/2個0, (k+1)/2個1.對應的不定方程為:
X1+ X2+ …+X(k+1)/2=n
y1+ y2+ …+y(k+1)/2=m
解的個數是C(n-1,(k-1)/2)*C(m-1, (k-1)/2)
另一個是10…010,其中同樣是有(k+1)/2個0, (k+1)/2個1.對應的不定方程及解的個數和上一個一樣,也是C(n-1,(k-1)/2)*C(m-1, (k-1)/2)個解。
總的符合要求的字符串數為2*C(n-1,(k-1)/2)*C(m-1, (k-1)/2)
--
ps:1樓給出了另一種思路,往下看