Если вы увлекаетесь математикой или программизмомрованием, предлагаю подумать над следующей задачкой:
Есть игра, в которую играют трое (скажем, преферанс). Необходимо организовать чемпионат по этой игре со следующими условиями: каждый игрок должен сыграть с каждым, причем не более одного раза.
Вопрос для разминки: для какого числа игроков возможно
(
Read more... )
Comments 18
Reply
интересно. но для 4-х или 6-ти игроков чемпионат не проведёшь.
Число игр для каждого игрока равно n/2 - 0,5
абсолютно верно!
Reply
Reply
Только... к сожалению... на другой вопрос :(
Reply
Reply
в крикет играет две команды.
http://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D0%BA%D0%B5%D1%82
Reply
Reply
Так-то!
Reply
C из N по 3
Reply
смотрите: C из N по 3 -- есть количество разнообразных троек, которые можно выбрать из N элементов, рассчитывается по формуле N!/3!(N-3)!.
для примера выше (где N=9), C=84. и что это нам даёт? 9 игроков можно распределить по 12-ти тройкам, а не 84-м.
Reply
Reply
Reply
Ответ:Играть могут количество игроков равной 3n т.е. 3,27,81... Каждый сыграет (n-1)/2
Как реализовать? Делаем класс игрок , класс стол(имеет три переменный "стул",которые являются указателями на объект типа игрок), и зацикленный список столов. Рассаживаем, потом берем 3 игрока и тащим его за след стол, сажаем вместо тамошнего 3 и т.д, пока снова не вернемся за свой стол, где берем 1 игрока и тащим также но в обратном направлении. Когда эти два мудака снова окажутся за своим столом вместе, заканчиваем текущую иитерацию.
Разбиваем игроков на 3 группы(те кто бегал друг за другом по столам и просто постоянно сидел за 1 столом) для них делаем тоже самое просто список столов в этот раз будет меньше в 3 раза. и "столуем" их до тех пор пока не окажется что им достаточно 1 стола.
Все алес.
Reply
Алгоритм для 3^n верный.
Только тремя в степени n множество числа игроков не ограничивается. К примеру, чемпионат можно провести для 15-ти игроков. Или, скажем, для семи:
123
145
167
246
257
347
356
Reply
Leave a comment