排列生成算法有三种:序数法、字典序法、换位法。本文只讨论前两种较常用的方法。
一.序数法
所谓序数,指的是某个排列在这n的数的所有排列中按字典序排序的序数。已知一个排列,可以用康托展开求其序数。假设排列为,这个排列对应的序数为
。其中
表示位于第i位右边比
小的元素的个数,
排列组合意义上理解:设当前排列,考察第
位
,第
位比
小的排列的
一定比
小,第
位有
中情况,后面的
位的情况为
,所以在
排列生成算法有三种:序数法、字典序法、换位法。本文只讨论前两种较常用的方法。
所谓序数,指的是某个排列在这n的数的所有排列中按字典序排序的序数。已知一个排列,可以用康托展开求其序数。假设排列为,这个排列对应的序数为
。其中
表示位于第i位右边比
小的元素的个数,
排列组合意义上理解:设当前排列,考察第
位
,第
位比
小的排列的
一定比
小,第
位有
中情况,后面的
位的情况为
,所以在