感谢原文: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),总方案数就为两种情况的方案数之和。