Python学习笔记:排列与组合

一、排列组合公式

1、排列公式

P n m = n ( n − 1 ) ( n − 2 ) . . . ( n − m + 1 ) = n ! ( n − m ) ! P_n^m=n(n-1)(n-2)...(n-m+1)=\displaystyle\frac{n!}{(n-m)!} Pnm=n(n1)(n2)...(nm+1)=(nm)!n!
P n n = n ! ( 0 ! = 1 ) P_n^n=n! (0!=1) Pnn=n!(0!=1)

2、组合公式

C n m = n ( n − 1 ) ( n − 2 ) . . . ( n − m + 1 ) m ! = n ! ( n − m ) ! m ! C_n^m=\displaystyle\frac{n(n-1)(n-2)...(n-m+1)}{m!}=\frac{n!}{(n-m)!m!} Cnm=m!n(n1)(n2)...(nm+1)=(nm)!m!n!

二、计算排列组合

1、摆放图书任务

  • 琼丝女士要把 10 10 10本书放到书架上,其中有 4 4 4本数学书、 3 3 3本化学书、 2 2 2本历史书和 1 1 1本语文书。现在琼丝女士想整理她的书,如果相同的图书都必须放在一起,那么一共有多少种放法?
  • 如果最先摆放数学书,接下来放化学书,再下来放历史书,最后放语文书,那么一种有 P 4 4 × P 3 3 × P 2 2 × P 1 1 = 4 ! × 3 ! × 2 ! × 1 ! P_4^4\times P_3^3\times P_2^2\times P_1^1=4!\times3!\times2!\times1! P44×P33×P22×P11=4!×3!×2!×1! 种方式,而这 4 4 4种学科的顺序一共有 P 4 4 = 4 ! P_4^4 = 4! P44=4! 种,因此,所求答案是 4 ! × 4 ! × 3 ! × 2 ! × 1 ! = 6912 4!\times4!\times3!\times2!\times1!=6912 4!×4!×3!×2!×1!=6912
  • 利用scipy.special模块里的perm()函数来计算
    在这里插入图片描述

2、委员会构成

  • 一个团体共有 12 12 12人,其中 5 5 5位女士, 7 7 7位男士,现从中选取 2 2 2位女士和 3 3 3位男士组成一个委员会,问有多少种不同的委员会?
  • 因为有 C 5 2 C_5^2 C52种方法选取女士,有 C 7 3 C_7^3 C73种方法选取男士,所以根据基本计数法则,一种有 C 5 2 × C 7 3 = 5 × 4 2 × 1 × 7 × 6 × 5 3 × 2 × 1 = 350 C_5^2 \times C_7^3=\displaystyle\frac{5\times4}{2\times1}\times\frac{7\times6\times5}{3\times2\times1}=350 C52×C73=2×15×4×3×2×17×6×5=350种可能的委员会。
  • 利用scipy.special模块里的comb()函数来计算
    在这里插入图片描述

三、显示排列组合

1、显示全排列

  • 1、2、3全部排列方式

在这里插入图片描述

2、显示排列

  • 1、2、3、4、5中取3个数的排列
    在这里插入图片描述

3、显示组合

  • 1、2、3、4、5中取3个数构成一组,总共有多少可能的组
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/howard2005/article/details/109283877