Сортировка всех возможных комбинаций - PullRequest
1 голос
/ 28 июля 2010

Я пытаюсь отсортировать список комбинаций определенным образом.Считайте номера 1-6 командами, если каждая команда может вовремя играть друг против друга, мы получили список возможных совпадений:

12 23 34 45 56
13 24 35 46 
14 25 36        
15 26           
16

Так что теперь я хочу что-то вроде «игровых дней»:

12    13    14    15    16
34    46    26    24    23
56    25    35    36    45

Как вы можете видеть после каждого блока, у каждой команды есть одна игра, две игры, ...
Я не мог получить алгоритм для сортировки списка:

12 13 14 15 16 23 24 25 26 34 35 36 45 46 56

до

12 34 56 13 46 25 14 26 35 15 24 36 16 23 45

Дополнительно: с нечетными номерами команд способ создания игровых дней становится еще хуже, потому что вам приходится выходить из команды на весь день:

12 23 34 45
13 24 35    
14 25       
15  

12    23    14    24    25
34    45    35    15    13

В первом блоке 5 не воспроизводится, во втором блоке 1 не воспроизводится ....

Спасибо за любую помощь или идеи относительно этой проблемы в c # с.net 4 возможно использует Linq для манипулирования списком.

РЕШЕНИЕ:

Турнир с круговым турниром
http://en.wikipedia.org/wiki/Round-robin_tournament
Алгоритм Турнира с круговым турниром в C #

1 Ответ

0 голосов
/ 28 июля 2010

Вам действительно не нужно сортировать это (из того, что я вижу).

Все, что вам нужно сделать, это создать «наборы» из 3 предметов, где предметом является {A, B} дляteam.

Итак, для начала выберите любой случайный предмет (и удалите его из списка всех комбинаций), после чего вы скажете: {1,3}.Затем выберите другое случайное число (и удалите), где {A, B}! = 1 или 3 для A и B. Последний шаг прост, так как у вас осталось только 2 варианта.Выберите любой действительный вариант, удалите из списка.Повторите еще 4 раза.

...