3

いくつかの種族から4頭の馬の組み合わせを選択するアルゴリズムを構築しようとしています。

つまり、10のレースがあり、それぞれ8頭の馬が走っているとします。4頭の馬が別々のレースから来なければならないという条件で、これらのレースの4頭の馬のすべての組み合わせが必要です(同じ組み合わせの2頭の馬が同じ馬から来ることはできません)人種)。

この問題(および既存のアルゴリズム)の名前はありますか?

一連のループになると思いますが、今日はコーヒーを飲んでいません...乾杯

編集:私はそれぞれの組み合わせについて、その組み合わせに対してかなり長い機能を実行すると言うべきなので、私はすでに行った組み合わせを繰り返したくありません。

編集:これよりも良い方法はありますか?

            n = number of races;
            for ( int i = 0; i < n; i++ ) {
                for ( int j = i + 1; j < n; j++ ) {
                    for ( int k = j + 1; k < n; k++ ) {
                        for (int l = k + 1; l < n; l++) {
                            //for each combination of 4 separate sets
                            for(int p = 0; p < races.get(i).getHorses().size(); p++){
                                for(int q = 0; q < races.get(j).getHorses().size(); q++){
                                    for(int r = 0; r < races.get(k).getHorses().size(); r++){
                                        for(int s = 0; s < races.get(l).getHorses().size(); s++){
                                            //each combination of 4 horses
                                            races.get(i).getHorses().get(p)
                                            races.get(j).getHorses().get(q)
                                            races.get(k).getHorses().get(r)
                                            races.get(l).getHorses().get(s)
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
4

2 に答える 2

2

よくわかりませんが、Chase's Twiddle(アルゴリズム)が問題の解決に役立ちます。

これを確認してください:-Phillip J Chase、 ` Algorithm 382:Combinations of M out of N Objects '(1970)

于 2013-01-22T18:09:25.703 に答える
0

基本的に2つの問題があります。合計10レース(順番は関係ありません)から4レースを選ぶと、10レースになります!/(6!* 4!)または210の組み合わせ。次に、4つのレースの組み合わせごとに、各レースの8頭の馬のいずれかを選択できます。これは8^4または4096です。

于 2013-01-22T18:20:03.250 に答える