康托展开式逆运算,求详细的解释。
/* 康托展开的逆运算. {1...n}的全排列,中的第k个数为s[] */ void invKT(int n, int k, int s[]) { int i, j, t, vst[8]={0}; k--; for (i=0; i<n; i++) { t = k/fac[n-i-1]; for (j=1; j<=n; j++) if (!vst[j]) { if (t == 0) break; t--; } s[i] = j; vst[j] = 1; k %= fac[n-i-1]; } }
你确定你的代码贴完了?
只有一部分 康托展开的逆运算算法。