int KT(string tm)
{
int ret = 0, t;
for (int i = 0; i < NL; ++i){
t = 0;
for (int j = i + 1; j < NL; ++j){
if (tm[j] < tm[i]){
t++;
}
}
ret += t * fac[NL - i - 1];
}
return ret+1;
}
void initFac()
{
fac[0] = 1;
for (int i = 1; i <= NL; ++i){
fac[i] = fac[i-1] * i;
}
}
康托展开与逆康托展开
最新推荐文章于 2020-10-13 16:11:35 发布