这样问题就转化为:能否找一个编号与排列的一一映射,简称双射。
编号排列排列编号
。
?
这就要说到一个著名的数学定理了,康托展开。
03
PART
康托展开
?...康托展开是全排列与自然数的双射,常用于空间压缩。
本质是计算当前排列在所有由小到大全排列中的顺序,因此可逆。
?
?
3.1
排列自然数
?
?
3.2
自然数排列
?...04
PART
代码实现
?...4.1
康托编码
// 0-9的阶乘
const int FAC[] = {1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880};
int cantor(int...4.2
康托解码
void decode(int ans[], int x, int n) {
bool visit[9] = {false};
for (int i = 0; i <