信息学竞赛的问题??

来源:百度知道 编辑:UC知道 时间:2024/05/21 10:33:09
由3个A,5个B,2个C构成的所有字符串中,包含子串”ABC”的共有几个??
给出过程,谢

我算出来是840个:

8*A(7,7)/(A(2,2)*A(4,4)*A(1,1))=840

因为去掉ABC这个组合,剩下7个字符,其中2个A,4个B,1个C,然后7个字符就有8个不同的出现ABC的情况,就有了上面的式子了
-----------------------------------
刚才的解有问题,我用程序穷举了一下,是780个,也就是刚才的解是有重复的:
先是必须有一个ABC,但是剩下的2个A,4个B,1个C又能组合出一个ABC,刚才的算法,没有把这两个ABC的重复考虑进去.

现在考虑重复的情况:有两个ABC,剩下1个A,3个B共4个字符,将2个ABC放入这4个字符中去,共有:
(4!/3!)*(C(2,5)+5)=60中情况
(4!/3!)是剩下4个字符固有的组合数,C(2,5)是从4个字符产生的5个空中选出2个供摆放2个ABC,5是因为2个ABC可能连在一起

最后刚才的840减现在的60就780了

8!/(2!*4!)=840
把子串看成是一个,那就有8个字符,根据概率统计,第一个位子可以是8个中的任意一个,第2个可以是剩下7个中的任意一个.......以此类推,所以是8*7*6*5*4*3*2*1
又因为有2个A,4个B,所以是上面的答案!

穷举法举下就出来了.