排列组合知识补充

来源:互联网 发布:python raw input 编辑:程序博客网 时间:2024/06/03 21:42

感谢原文:http://blog.csdn.net/zxw0819/article/details/71706543?locationNum=2&fps=1

先补充一个其它的东西—–二项式定理: 
这里写图片描述

排列:

定义:从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号 A(n,m)表示。 
计算公式: 这里写图片描述 
此外规定0!==1

其满足:A(n,m)=n×A(n-1,m-1);(编程时可用此递推)

组合:

定义:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号 C(n,m) 表示。 
计算公式: 这里写图片描述 
两个性质: 
1.C(n,m)=C(n,n-m) 
2.C(n,m)=C(n-1,m)+C(n-1,m-1);(编程时可用此递推)

对于性质1, 
当m>n/2时,就可转换成后一个式子,使运算简化。[当C(n,x)==C(n,y)时,要么x==y要么x+y==n]

对于性质2, 
可这样理解:c(n,m)即为从n件物品中选m件的方案数。如果第m件物品不选,方案数就变为c(n-1,m),如果选第m件物品,方案数就变为c(n-1,m-1),总方案数就为两种情况的方案数之和。