m个A,n个B,k个C的所有组合,按照字典排序输出

一、问题1:将m个A,n个B,k个C,所组合成 的所有字符串按照字典排序输出

解析:

1.先求k个C的组合;
2.然后求1个B,k个C的组合;
3.根据1个B,k个C的组合求2个B,k个C的组合;
4.根据2个B,k个C的组合求3个B,k个C的组合;
5.根据n-1个B,k个C的组合求n个B,k个C的组合;
6.按照同样的方法求出m个A,n个B,k个C所有组合。

解题步骤:

1.求k个C的组合:

只有一种组合CC…C

2.求n个B,k个C的组合:

(1)对n-1个B,k个C的组合进行遍历,在第一位之前添加B,得到一组组合
(2)对上面得到的组合进行遍历,判断第二位是否是B,如果是则将第1,第2位互换,添加到新组合中
(3)对上面得到的组合进行遍历,判断第三位是否是B,如果是则将第2,第3位互换,添加到新组合中

(k+1)对上面得到的组合进行遍历,判断第k+1位是否是B,如果是则将第k,第k+1位互换,添加到新组合中
将上面所有得到的组合按照顺序合并即可得到,n个B,k个C字典顺序排列的所有组合。

3.m个A,n个B,k个C的组合:

(1)对n个B,k个C的组合进行遍历,在第一位之前添加A,得到一组组合
(2)对上面得到的组合进行遍历,判断第二位是否是A,如果是则将第1,第2位互换,添加到新组合中
(3)对上面得到的组合进行遍历,判断第三位是否是A,如果是则将第2,第3位互换,添加到新组合中

(k+1)对上面得到的组合进行遍历,判断第k+1位是否是A,如果是则将第k,第k+1位互换,添加到新组合中

将上面所有得到的组合按照顺序合并即可得到,m个A,n个B,k个C字典顺序排列的所有组合。

求所有字典排序的组合举例:

2个A,2个B,2个C所有字典排序的组合:

1.先将2个C排序,只有一种:

    CC

2.求1个B,2个C的组合:

(1)可以在0个B,2个C的组合前面都加B,得到:

    BCC     

(2)对上面结果进行遍历,如果第2位不是B则互换1、2位,否则移除该组合,得:

     CBC

(3)对上面结果进行遍历,如果第3位不是B则互换2、3位,否则移除该组合,得:

      CCB

所以求1个B,2个C的组合总的结果即为:

     BCC
     CBC         
     CCB

3.求2个B,2个C的组合:

(1)可以在1个B,2个C的组合前面都加B,得到:

     BBCC
     BCBC
     BCCB

(2)对上面结果进行遍历,如果第2位不是B则互换1、2位,否则移除该组合,得:

     CBBC
     CBCB

(3)对上面结果进行遍历,如果第3位不是B则互换2、3位,否则移除该组合,得:

      CCBB

所以求2个B,2个C的组合总的结果即为:

     BBCC
     BCBC
     BCCB

     CBBC
     CBCB

     CCBB

4.求1个A,2个B,2个C的组合:

参照2、3步骤即可。

二、问题2:求m个A,n个B,k个C,能组合成的所有字符串的个数

1.求n个B,k个C能组合成的所有字符串的个数
(1)当有2个c时,列出一个中间表格,列表示有B的个数,表格中数值乘系数,求和,即可得到组合数量:
中间表规律:Bi=Bi+Bi+…+Bn

B\系数 1 2 3
1 0 0 1
2 1 1 1
3 3 2 1
4 6 3 1
5 10 4 1
6 15 5 1

(2)然后由中间表得到最终n个B,2个C组合的数目:

B 组合数
1 1*0+2*0+3*1=3
2 1*1+2*2+3*1=6
3 1*3+2*2+3*1=10
4 1*6+2*3+3*1=15
5 1*10+2*4+3*1=21
6 1*15+2*5+3*1=28

2.求m个A,n个B,k个C,能组合成的所有字符串的个数
(1)当有2个B,2个c时,列出一个中间表格,列表示有A的个数,表格中数值乘系数,求和,即可得到组合数量:
下表规律:Ai=Ai+Ai+…+An

A\系数 1 2 3 4 5
1 0 0 0 0 1
2 1 1 1 1 1
3 5 4 3 2 1
4 15 10 6 3 1
5 25 20 10 4 1
6 60 35 15 5 1

(2)然后由上表得到最终n个B,2个C组合的数目:

B 组合数
1 1*0+2*0+3*1+4*0+5*1=5
2 1*1+2*1+3*1+4*1+5*1=15
3 1*5+2*4+3*3+4*2+5*1=35
4 1*15+2*10+3*6+4*3+5*1
5 1*25+2*20+3*10+4*4+5*1
6 1*60+2*35+3*15+4*5+5*1

猜你喜欢

转载自blog.csdn.net/qq_39559604/article/details/82108912