Доброго времени суток! пишу скрипт и понадобилось составлять n-элементные множества. суть в том, что в функцию передается массив и число, которое обозначает длину множества, на выходе получаем список множеств заданной длинны. ПРИМЕР: массив: [a, b, c, d] число: 2 результат функции: a,b; a,c; a,d; b,c; b, d; c,d; подскажите алгоритм или псевдокод для реализации функции.
нашел такое решение, только на C: Код (Text): #include <stdio.h> const int numVal = 5; const int setSize = 3; const char data[numVal] = { 'a', 'b', 'c', 'd', 'e' }; void Print( int value ) { int numPrn = 0; for (int i = 0; i < numVal; ++i) { if (value & (1 << i)) { printf("%c", data[i]); printf((++numPrn < setSize) ? ", " : "\n"); } } } void Place( int value, int offs, int num ) { int i, limit = numVal - offs; for (i = 0; i < limit; ++i) { int offs2 = offs + i; int value2 = value | (1 << offs2); int num2 = num + 1; if (num2 < setSize) Place(value2, offs2 + 1, num2); else Print(value2); } }