程序员的数学I

排列组合II

  • 思考:从5张牌中任意取出3张进行排列(permutation),请问有多少种排列方法?
  1. 排列和置换相同,是考虑顺序的,比如QKA和AKQ是两个不同的排列
  2. 按照如下计算方式:
    • 第1张的取法有5种
    • 第2张的取法有4种
    • 第3张的取法有3种

由此可得,5 x 4 x 3 = 60

归纳一下

排列的归纳方法: 假设从n张牌中取出k张牌进行排列

  • 第1张是从n张中取出1张,因此有n种取法
  • 第2张是从n-1张中取出1张,因此有n-1种取法
  • 第3张是从n-2张中取出1张,因此有n-2种取法
  • 第k张是从n-k+1中取出1张,因此有n-k+1种取法
    因此,总数是 n x (n-1) x (n-2) x ... x (n-(k-1))

其实用树形图更能认清楚计数过程的本质

计数的层次就是一个递减的过程

组合

置换和排列都需要考虑顺序,而不考虑顺序的方法称为“组合”
假设现在有1,2,3,4,5五张牌,从5张牌中抽取3张,并不考虑他们的顺序,即以3张牌为1组进行选择,重复的视为同一组,例如:123和321和213,所以取法一共有10种
这种取法称为“组合”(combination)

  • 首先,和排列一样“考虑顺序”进行计数
  • 除以重复技术的部分(重复度)
  • 所以:组合总数=5张里面取3张的排列总数/3张的置换总数)
    5 x 4 x 3 / (3 x 2 x 1) = 10

结论 置换和组合相结合,就是排列。

  • 置换表示3张牌的交替排列方法
  • 组合表示3张牌的取法
  • 两者的结合就是取出3张牌,进行交替排列,即表示排列

你可能感兴趣的:(程序员的数学I)