Показать сообщение отдельно
  #3  
Старый 19.12.2012, 18:58
Пользователь

Отправить личное сообщение для blackbanny Посмотреть профиль Найти все сообщения от blackbanny
 
Регистрация: 05.01.2011
Сообщений: 29

MBo, спасибо)
нашел такую реализацию на C:
Код:
#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);
    }
}