2010-07-28 2 views
1

Я пытаюсь сортировать список комбинаций определенным образом. Рассмотрим число 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 

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

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, который не воспроизводится.

Благодарим за любую помощь или идеи относительно t его проблема в C# с .net 4, возможно, используя Linq для управления списком.

РЕШЕНИЕ:

Круговой турнир
http://en.wikipedia.org/wiki/Round-robin_tournament
Round Robin Tournament algorithm in C#

+0

Я еще не читал ваш вопрос, но можете ли вы сделать более понятным, какой из множества различных выходов и способов форматирования вы предложили именно тот, который вам нужен? –

+0

Его не о выходе, цифры просто для объяснения. – Gpx

+1

Это называется раундовым турниром для всех, кто хочет в Google. –

ответ

0

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

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

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

+0

Не знаю, будет ли это работать, но я стараюсь. – Gpx

+0

Проблема в следующем: он найдет {12, 34, 56} в следующем раунде {13, 24, x}. В x единственное возможное решение - 56! – Gpx

+0

@Gpx: Вы могли бы отказаться от этого и попробовать следующее. – leppie

Смежные вопросы