0

グループのマップがあります。各グループにはプレイヤーのリストがあります:

Map<String, List<Player>> playerByGroup = new LinkedHashMap<String, List<Player>>();

例えば:

マップには以下が含まれます:

 group A: players 1 2 3 4 5 6 
 group B: players 7 8 9 10 11 12 
 group C: players 13 14 15 16 17 18 
 group D: players 19 20 21 22 23 24 

今、私はスケジュールを作成する必要があります。すべてのグループの各プレーヤーは、別のグループのプレーヤーと一緒にプレーする必要があります

例えば:

プレーヤー 1 は、プレーヤー 7 - 24 のプレーヤーである必要がありますが、プレーヤー 2 - 6 のプレーヤーではありません。

これは作成する問題ではありません

しかし、今私は問題があります:

numberOfPlayer/2 のゲームを含むラウンドを作成する必要があります。ラウンドでは、すべてのプレイヤーが一度だけプレイできます

例えば

1.round should be looks like:

1.game 1 vs 7
2.game 13 vs 19
3.game 3 vs 9
4.game 14 vs 20
5.game 2 vs 8
6.game 15 vs 21
7.game 4 vs 10
8.game 16 vs 22
9.game 5 vs 11
10.game 17 vs 23
11.game 6 vs 12
12.game 18 vs 24

2.round ...

1 人のプレイヤーは 18 人のプレイヤーとプレイする必要があるため、18 ラウンドだけにする必要があります。

問題:

問題は、各ラウンドで 1 人のプレーヤーが 1 回だけプレイする 18 ラウンドを作成することです。

4

2 に答える 2

0

あなたの例の答えを説明します。一般的な状況に合わせて拡張するのは簡単です。

ラウンドを 3 つのメイン セットに分割して、各セットに 6 つのラウンドがあるようにします。

6ラウンドの最初のセットで:

グループ A の全プレイヤーがグループ B の全プレイヤーと対戦し、グループ C の全プレイヤーがグループ D の全プレイヤーと対戦します。

2 番目のセットでは、グループ A のすべてのプレーヤーがグループ C のすべてのプレーヤーと対戦し、グループ B のすべてのプレーヤーがグループ D のすべてのプレーヤーと対戦します。3 番目のセットでは、グループ A のすべてのプレーヤーがグループ D のすべてのプレーヤーと対戦します。グループ B のすべてのプレーヤーは、グループ C のすべてのプレーヤーと対戦します。

于 2012-09-03T12:17:35.660 に答える
0

あなたへのヒント:

6各グループに人がいる組み合わせの問題と考えてください。グループの数4。各プレイヤーがプレイする必要があるが、グループでプレイする必要がない場合、組み合わせの総数は 24C4 - 4*(6*(6-1)/2)( Cis Combination )or になり(24*23*22*21)(4*3*2*1) - 4*(6*(6-1)/2)ます。それに応じてコーディングします。

于 2012-09-03T10:02:14.913 に答える