Посчитать все возможные варианты сочетаний строк
Есть 5000 строк в массиве. Нужно перебрать все возможные варианты в ряде из 10 вариантов, при этом порядок в ряде не важен. К примеру:
1,2,3,4,5,6,7,8,9,10 = 10,9,8,6,7,5,4,3,2,1 = 8,9,10,7,6,4,5,3,1,2 - Одни и те же ряды.
В каждом уникальном ряду ещё нужно будет выполнить несколько арифметических рассчётов. Возможно ли реализовать такое или не получиться выполнить такое большое количество операций? А если возможно, то как такое лучше сделать?
Ответы (1 шт):
Количество сочетаний равно биномиальному коэффициенту С105000
С105000 = 5000! / (10! * 4990!) = 2667017604016906260066258312000 ≈ 2*1030
Навряд ли это все получится перебрать. Если перебирать по миллиарду комбинаций в секунду, то на это уйдет, по моим грубым подсчетам, 60 триллионов лет.
Если все-таки понадобится перебор сочетаний, посмотрите варианты здесь: How to iteratively generate k elements subsets from a set of size n in java?. Обратите внимание на класс Combinations из Apache Commons.