5个0,4个1组成的字符串中,出现01或10的次数为4的不同字符串个数


题:(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楼给出了另一种思路,往下看


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM