У меня есть категории и общее количество элементов в каждой категории.Найти общее количество подстановок подкатегорий, игнорирующих отражения
for example :
2 L,
2 S, and
1 P
Я мог бы выстроить их в следующие 16 способов.
llpss
llsps
llssp
lplss
lpsls
lslps
lslsp
lspls
lspsl
lsslp
lsspl
pllss
sllps
sllsp
slpls
slslp
Перед тем, как возразить, что список является неполным, вы должны знать, что зеркальные изображения считаются эквивалентными.
Например, так как «sspll» - это то же самое, что «llpss» от начала до конца, мы считаем их единственными.
Вам предоставляется int [], содержащая число элементов каждой категории (L, S, P, A, B). Верните int, указав количество способов, которыми они могут быть выровнены, игнорируя отражения.
for example :
{2, 2, 1}
Returns: 16 // illustrated above.
{2, 2, 2}
Returns: 48
Что я могу думать о алгоритма очень проста:
- Преобразование числа в соответствующих алфавитов (L, S, P, A, B, B по индексу 0).
- Подсчитать общее перестановку возможных с этими алфавитов
удалить отражения
Но это, конечно, не оптимальна solution.Can кто-нибудь сказать мне любое другое решение этой проблемы. Благодаря ..
Что вы имеете в виду «Преобразовать число их соответствующих алфавитов (L, S, P , A, B; B с индексом 0). "? Откуда взялись B и A? –
Это означает, что при вводе {2,2,1} в качестве вклада мы изменим его на 1 B, 2 A и 2 P i.e {PPAAB}.Надеюсь, я ясно дал понять. – Cyclotron3x3
А как насчет L и S? –