参考博客:https://blog.csdn.net/Hi_KER/article/details/81263889
康托展开解决的两个问题:
- 正康托展开:给出一个全排列的序列,求该序列是第几个全排列的序列。
如初始序列1234,那么3214是第15个全排列的序列
- 逆康托展开:给出数字k,求全排列序列中的第k个序列是什么。
如初始序列1234,第15个全排列的序列为3214
康托展开是为了解决全排列和序号之间的映射问题,对于全排列,可以通过next_permutation(a,a+n)(或者pre_permutation(a,a+n))去求解,当然也可以自己写一个递归回溯函数求解。
正康托展开
给定n=4,序列:3214,求该排列字典序?
第一位为3,则当第一位为1,2时生成的排列比目标排列小,有所以2*3!种;
第二位为2,当第二位为1是生成的排列更小,有1*2!种;
第三位为1,没有比1更小的排列

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



