ник: Силblч
Сочетанием (combination) из n элементов по m называется множество (неупорядоченный набор) из m различных чисел, принадлежащих множеству 1:n.
Для перебора сочетаний выберем удобное стандартное представление сочетаний, например в виде монотонно возрастающего набора из m чисел, лежащих в диапазоне 1:n и будем перебирать только такие стандартные записи сочетаний.
Состояние вычислительного процесса. Массив x1,...,xm номеров, включенных в сочетание.
Начальное состояние. Принять xi = i для всех i, принадлежащих множеству 1:m.
Стандартный шаг. Просматривать компоненты вектора x, начиная с xm, и искать первую компоненту, которую можно увеличить (нельзя увеличить xm = n, xm - 1 = n-1,...). Если такой компоненты не найдется, закончить процесс. В противном случае, пусть k — наибольшее число, для которого xk < n + m - k. Увеличить xk на единицу, а для всех следующих за k-ой компонентой продолжить натуральный ряд от нового значения xk, т.е. положить xi = xk + (i - k) для i > k.
Литература
1. Романовский И.В. Дискретный Анализ. — СПб.: Невский диалект, 2000 — 2003.
http://rain.ifmo.ru/cat/view.php/vis/combinations/combinations-2003