スマートな解決策を探している問題に出くわしました。それは基本的に組み合わせ論の問題です。
5 つのオブジェクトがあり、そのうち 2 つを選択する必要があります。同じオブジェクトを 2 回選択することができ、どの順序で選択してもかまいません。これにより、( 5 + 2 - 1 2 を選択) = 15 の可能な組み合わせが得られます。各組み合わせ (つまり、(1,1) または (2, 5)) を 1 から 15 の間の数に減らしたいと思います。何か提案はありますか?
スマートな解決策を探している問題に出くわしました。それは基本的に組み合わせ論の問題です。
5 つのオブジェクトがあり、そのうち 2 つを選択する必要があります。同じオブジェクトを 2 回選択することができ、どの順序で選択してもかまいません。これにより、( 5 + 2 - 1 2 を選択) = 15 の可能な組み合わせが得られます。各組み合わせ (つまり、(1,1) または (2, 5)) を 1 から 15 の間の数に減らしたいと思います。何か提案はありますか?
準辞書式順序。2 番目のコンポーネントが最初のコンポーネントよりも小さくならないように、各選択に辞書式順序での位置を割り当てます。
(i,j) -> (15 - (7-i)*(6-i)/2) + (j - i) + 1
組み合わせ (i, j) があるとします。
一般性を失うことなく、i <= j とします
((7-i)+5)*(i-1)/2 + (j-i+1)
あなたが持っているでしょう
(1, 1)->1 (2, 2)->6 (3, 3)->10 (4, 4)->13 (5, 5)->15
(1, 2)->2 (2, 3)->7 (3, 4)->11 (4, 5)->14
(1, 3) -> 3 (2, 4) -> 8 (3, 5) -> 12
(1, 4)->4 (2, 5)->9
(1, 5)->5
基本的に、最初に列 i の前に組み合わせの数があり、次に行番号として (j-i+1) が加算されます