Знаете ли вы, как получить k-й элемент комбинации m-элементов в O (1)?Ожидаемое решение должно работать для любого размера входных данных и любого значения m.
Позвольте мне объяснить эту проблему на примере (код Python):
>>> import itertools
>>> data = ['a', 'b', 'c', 'd']
>>> k = 2
>>> m = 3
>>> result = [''.join(el) for el in itertools.combinations(data, m)]
>>> print result
['abc', 'abd', 'acd', 'bcd']
>>> print result[k-1]
abd
Для заданных данных k-й (2-й в этом примере) элемент комбинации m-элементов равен abd .Возможно ли это значение (abd) без создания всего комбинаторного списка?
Я спрашиваю, потому что у меня есть данные ~ 1 000 000 символов, и невозможно создать полный комбинаторный список длиной в м-символ, чтобы получитьk-й элемент.
Решением может быть псевдокод или ссылка на страницу, описывающую эту проблему (к сожалению, я ее не нашел).
Спасибо!