加减乘除四个原理不再赘述。(即使小学生都会的原理也能出些大学生不会的题目)
1集合的排列(Pertutations of Sets)(无重有序)(无重复有序)
设r为正整数,把n个元素的集合S的一个r排列理解为n个元素中r个元素的有序摆放。其数目用P(n,r)表示
对正整数n和r,r<=n,有P(n,r) = n(n-1)(n-2)......(n-r+1) = n! / (n-r)! (乘法原理证明)
若r>n,P(n,r)=0.并且有P(n,1)=n, P(n,n) = n!,定义P(n,0) = 1.
(在c++STL中,<algorithm>中有按照字典序产生排列的算法next_permutation和prev_permutation,函数返回bool值)
定理:n个元素的循环r排列(围成一个环)的个数是P(n,r)/r, 即n!/ (r(n-r)!), r= n时有(n-1)!
例如6个人围成环(固定一人)的方法有5!种。
2集合的组合(Combinations of Sets)(无重无序)
设r非负整数,理解为n中r个元素的无序选择。其数目记为C(n,r)
C(n,r) = P(n,r) / r! = n! / (r!(n-r)!) 性质:C(n,r)=C(n,n-r)
定理:C(n,0) + C(n,1) + C(n,2) + ...... + C(n,n) = 2^n