算法实现排列组合
1. 数学排列组合公式算法
数学排列组合公式主要包括排列和组合两种类型。排列是从n个不同元素中取出m个元素按一定的顺序排成一列,它的数目通常用符号Pₙₘ或P来表示。计算公式为Pₙₘ = n × × ... × 。组合是从n个不同元素中取出m个元素排成一列或成一组,不考虑其顺序,它的数目通常用符号Cₙₘ或C来表示。计算公式为Cₙₘ = n × × ... × /[m × × ... × 2 × 1]。也即Cₙₘ=n!/[!]。这是计算排列组合的基本公式和算法。
解释如下:
排列的计算公式:
排列是从n个不同元素中取出m个元素进行排序。比如从1到5这五个数中取出三个数进行排序,其排列数为P₅₃,表示从5个数中取3个数的所有可能的排序方式。计算时,从第一个数开始,它可以是任意数,因此有5种选择;第二个数在剩下的数中选择,有4种选择;以此类推,可以得到最终的排列公式为5×4×3。这个计算考虑了每一个元素的位置顺序。
组合的计算公式:
组合与排列类似,也是从n个不同元素中取出m个元素,但不考虑其顺序。比如从上述的1到5这五个数中取出三个数组成一个组合,不考虑这三个数字的顺序。计算组合时,我们不需要考虑元素之间的顺序,因此要对排列的结果进行除序处理,即将结果除以一个数的全序。组合公式中的除法操作体现了这一点,因为我们不再关心所选元素的排列方式,只需知道选取了多少个元素即可。因此,组合的计算公式为Pₙₘ除以m的阶乘。通过这种方式,我们可以准确地计算出不考虑顺序的组合数量。
2. 排列组合公式及排列组合算法
排列组合公式
排列组合公式/排列组合计算公式
公式P是指排列,从N个元素取M个进行排列。
公式C是指组合,从N个元素取M个进行组合,不进行排列。
N-元素的总个数
M参与选择的元素个数
!-阶乘,如9!=9*8*7*6*5*4*3*2*1
从N到数M个,表达式应该为n*(n-1)*(n-2)..(n-m+1);
因为从n到(n-m+1)个数为n-(n-m+1)=m
举例:
Q1: 有从1到9共计9个号码球,请问,可以组成多少个三位数?
A1: 123和213是两个不同的排列数。即对排列顺序有要求的,既属于“排列P”计算范畴。
上问题中,任何一个号码只能用一次,显然不会出现988,997之类的组合,我们可以这么看,百位数有9种可能,十位数则应该有9-1种可能,个位数则应该只有9-1-1种可能,最终共有9*8*7个三位数。计算公式=P(3,9)=9*8*7,(从9倒数3个的乘积)
Q2:有从1到9共计9个号码球,请问,如果三个一组,代表“三国联盟”,可以组合成多少个“三国联盟”?
A2:213组合和312组合,代表同一个组合,只要有三个号码球在一起即可。即不要求顺序的,属于“组合C”计算范畴。
上问题中,将所有的包括排列数的个数去除掉属于重复的个数即为最终组合数C(3,9)=9*8*7/3*2*1
3. 排列组合算法
1、排列有两种定义,但计算方法只有一种,凡是符合这两种定义的都用这种方法计算。
2、定义的前提条件是m≦n,m与n均为自然数。
3、从n个不同元素中,任取m个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列。
4、从n个不宽培核同元素中运中,取出m个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数。
5、用具体的例子来理解上面的定义:4种颜色按不同颜色,进行排列,有多少种排列方法,如果是6种颜色。从6种颜色中取出慎掘4种进行排列。