排列组合是组合数学的基础,从n个不同元素中任务m个,约定1<m<=n,按任意一种次序排成一列,称为排列,其排列种数记为A(n,m)。
从n个不同元素中任取m个(约定1<m<n)成一组,称为一个组合,其组合种数记为C(n,m)。
计算A(n,m)与C(n,m)只要简单进行乘运算即可,要具体展现出排列的每一列与组合的每一组,绝非轻而易举。我们应用递归设计来具体实现排列与组合。
实现排列A(n,m)
def p(n,m,k,a):
global s
if(k<=m):
for i in range(1,n+1):
a[k] = i #第k个数赋值i
u = 0
for j in range(1,k):
if(a[k]==a[j]):
u = 1 #一个标记位 看看是否选了重复的数字
if(u==0):
if(k==m): #如果选择的数的个数已经到了m个,则打印出来
s+=1
for j in range(1,m+1):
print(a[j],end=" ")
print