Этот класс может быть легко применен к вашей проблеме. Если у вас есть ранг (или индекс) для таблицы биномиальных коэффициентов, просто вызовите метод класса, который возвращает K-индексы в массиве. Затем выполните цикл по возвращенному массиву, чтобы увидеть, совпадает ли какое-либо из значений K-индекса с имеющимся у вас значением. Довольно прямо вперед ...

ЛЕНИЕ: Комбинаторика и unranking были в конечном счете тем, в чем я нуждался. Ссылки ниже очень помогли:

http://msdn.microsoft.com/en-us/library/aa289166(v=vs.71).aspx

http://www.codeproject.com/Articles/21335/Combinations-in-C-Part-2

Проблема
При заданном списке из N символов произнесите {0,1,2,3,4 ...}
И NCr комбинации этих

например. NC3 сгенерирует:

0 1 2  
0 1 3  
0 1 4  
...  
...  
1 2 3  
1 2 4  
etc...  

Для i-й комбинации (i = [1 .. NCr]) я хочу определить, является ли символ (ы) его частью.
Func (N, r, i, s) = True / False или 0/1
например. Продолжение сверху Первая комбинация содержит 0 1 2, но не 3

F(N,3,1,"0") = TRUE  
F(N,3,1,"1") = TRUE  
F(N,3,1,"2") = TRUE  
F(N,3,1,"3") = FALSE  

Текущие подходы и советы, которые могут помочь или быть связаны.
Отношение к матрицам Для r = 2 например. 4C2 комбинации являются верхней (или нижней) половиной 2D матрицы

    1,2 1,3 1,4  
    ----2,3 2,4  
    --------3,4  

Для r = 3 - это угол трехмерной матрицы или куба, для r = 4 - это «угол» для 4D-матрицы и так далее.

Другое отношение
В идеале решение должно иметь форму, похожую на ответ на это:Рассчитать комбинацию на основе позиции

N-ая комбинация в списке комбинаций длины r (с разрешенной повторностью), i-й символ может быть вычислен
Используя целочисленное деление и остаток:

n / r ^ i% r = (0 для 0-го символа, 1 для 1-го символа .... и т. д.)

например, для 6-й гребенки из 3 символов 0-й 1-й и 2-й символы:

i = 0 => 6 / 3^0 % 3 = 0   
i = 1 => 6 / 3^1 % 3 = 2   
i = 2 => 6 / 3^2 % 3 = 0   

6-й гребень будет тогда 0 2 0

Мне нужно что-то подобное, но с повторением не допускается.

Спасибо, что ответили на этот вопрос так далеко:]
Кевин.

Ответы на вопрос(1)

Ваш ответ на вопрос