[算法]排列组合

排列组合

1 排列(A/P)

A(m,n) = n!/(n-m)!
从 n 个数中取 m 个有前后顺序的数列
有 A(m,n) 种方式

2 组合(C)

C(m,n) = n!/[(n-m)!m!] = A(m,n)/m!
从 n 个数中取 m 个无前后顺序的数列
有 C(m,n) 种方式
性质:
C(m,n) = C(n-m,n)
C(r,n+1) = C(r-1,n) + C(r,n)
(杨辉三角性质)
C(0,n)+C(2,n)+C(4,n)+... = C(0,n)+C(2,n)+C(4,n)+... = 2^(n-1)
(杨辉三角系数的对半 a=b=1)

苹果分盘子问题(隔板法)

o o o o o o o [七个苹果分到三个有编号的盘子中]
之间一共有6个缝隙
往缝隙中插隔板形成3个不同的区间(就是不同的盘子)
所以为 C(2,6) = 15

重复排列问题

有 n1 a
n2 b
n3 c
有 (n1+n2+n3)!/(n1! * n2! * n3!)

循环排列

A(m,n)/m

分组排列问题

有 A B C D E F G 七个不同的苹果
分到 X Y Z三个不同的盘子里

1 把苹果分为三组

(1,1,5) (1,2,4) (1,3,3) (2,2,3)

2 把每组的排列计算出

(1,1,5): i = C(1,7)C(1,6)C(5,5)/A(2,2)
(1,2,4): j = C(1,7)C(2,6)C(4,4)/A(2,2)
(1,3,3): k = C(1,7)C(3,6)C(3,3)/A(2,2)
(2,2,3): l = C(2,7)C(2,5)C(3,3)/A(2,2)

Ans = (i + j + k + l)*A(3,3)

posted @ 2021-11-26 21:15  Rosyr  阅读(195)  评论(0编辑  收藏  举报