康託展開與逆康託展開

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;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章