求排列是全排列的第几个,求第几个是全排列___康托展开,逆康托展开
康托展开 Cantor expansion
康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。
康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。
说直白些就是:
你给一个排列,康托展开可以计算它是第几个全排列.
逆康托展开:
你给一个数组和一个数字k,康托展开可以计算数组的第k个全排列.
然后其在hash表中的应用. 就参考 八数码 题. HDU - 1043
然后其他的百度百科讲得很清楚了.所以就直接放链接了.
https://baike.baidu.com/item/%E5%BA%B7%E6%89%98%E5%B1%95%E5%BC%80/7968428?fr=aladdin