問題のLOJ167カントール拡張ソリューション

フェイス質問

カントールの展開します:

カントールは、一般構造空間ハッシュテーブルの圧縮に使用される自然数、全単射完全順列に拡張されます。カントール展開本質は、ランクの大完全な配列に全ての小で現在配置を計算することであるので、可逆的です。

X = A [0] *(N-1)!+ A [1] *(N-2)!+ ... + A [N-1] * 0!

[i]はそれがどのように多くの数によって階乗の後ろI [i]の値、つまり、数よりも少ない数の背後に配置されることを意味

ように、1の値-香港ドラッグの数の計算値は、すべての順に配置されている展開X- +1の完全配列の順序は

 

Q:それはキャンターが展開方法を知られているが、それは追求にランクどのように配置するために知っているが?

A:その後、キャンターは展開の逆を使用!;

 

逆キャンターを展開します。

前述したように、香港の膨張は、天然の配列番号からドラッグし、マッピングが可逆的であるが、その後の自然数から展開逆カンドラッグは、マッピングのシーケンスです。

たとえば、子供のために:

(1,2,3,4,5)61 34152に順列から計算することができる与えられるで
プロセスは以下の通りである:
!4分の61 2 I = 13、説明と、説明は最初にそのように、最初の二つよりも数が小さいです3。
13/3と!= 1 2は、第二の数が第2未満である後に記述された命令は、第4ビット2を有しています。
1/2!= I 01、第3のビットの後に記述された命令が第3の数以上である、第三のビットが1です。
1/1!= 4番目のビットが1よりもI 1 0、第二の数の後に記述された命令が少ない、4番目のビット5。

おすすめ

転載: www.cnblogs.com/kamimxr/p/11571579.html