Last updated 6 years ago
从包含nnn个不同元素的集合s=[x0,x1,x2,…,xn−1]s = [ x_0, x_1, x_2, \dots , x_{n-1} ]s=[x0,x1,x2,…,xn−1]中任意取mmm个元素(m≤nm \leq nm≤n),组成的所有排列。其中任意两元素互不相同。
在Full Permutation和Combination的基础上,从拥有nnn个元素的sss中选取mmm个元素,可得到n!m!⋅(n−m)!\frac{n!}{m! \cdot (n-m)!}m!⋅(n−m)!n!个组合。遍历所有组合进行全排列,即为所求。
该算法的时间复杂度为O(Pmn)=O(n!(n−m)!)O(P_m^n) = O( \frac {n!} {(n-m)!} )O(Pmn)=O((n−m)!n!)。