За последние 24 часа нас посетили 21922 программиста и 1010 роботов. Сейчас ищут 704 программиста ...

составление n-элементных множеств из массива

Тема в разделе "Решения, алгоритмы", создана пользователем blackbanny, 13 дек 2012.

  1. blackbanny

    blackbanny Активный пользователь

    С нами с:
    16 фев 2011
    Сообщения:
    89
    Симпатии:
    0
    Доброго времени суток!
    пишу скрипт и понадобилось составлять n-элементные множества.
    суть в том, что в функцию передается массив и число, которое обозначает длину множества, на выходе получаем список множеств заданной длинны.
    ПРИМЕР:
    массив: [a, b, c, d]
    число: 2
    результат функции: a,b; a,c; a,d; b,c; b, d; c,d;

    подскажите алгоритм или псевдокод для реализации функции.
     
  2. blackbanny

    blackbanny Активный пользователь

    С нами с:
    16 фев 2011
    Сообщения:
    89
    Симпатии:
    0
    нашел такое решение, только на C:
    Код (Text):
    1. #include <stdio.h>
    2.  
    3. const int numVal = 5;
    4. const int setSize = 3;
    5. const char data[numVal] = { 'a', 'b', 'c', 'd', 'e' };
    6.  
    7.  
    8. void Print( int value )
    9. {
    10.     int numPrn = 0;
    11.     for (int i = 0; i < numVal; ++i) {
    12.         if (value & (1 << i)) {
    13.             printf("%c", data[i]);
    14.             printf((++numPrn < setSize) ? ", " : "\n");
    15.         }  
    16.     }  
    17. }
    18.  
    19. void Place( int value, int offs, int num )
    20. {
    21.     int i, limit = numVal - offs;
    22.     for (i = 0; i < limit; ++i) {
    23.         int offs2 = offs + i;
    24.         int value2 = value | (1 << offs2);
    25.         int num2 = num + 1;
    26.         if (num2 < setSize)
    27.             Place(value2, offs2 + 1, num2);
    28.         else
    29.             Print(value2);
    30.     }
    31. }
     
  3. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Поищи по форуму. Было уже это здесь, и не один раз. На php.
     
  4. blackbanny

    blackbanny Активный пользователь

    С нами с:
    16 фев 2011
    Сообщения:
    89
    Симпатии:
    0
    да я уже сам написал с C на PHP
     
  5. MaXyC_Web_Studio

    MaXyC_Web_Studio Активный пользователь

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    ну так выложи
     
  6. blackbanny

    blackbanny Активный пользователь

    С нами с:
    16 фев 2011
    Сообщения:
    89
    Симпатии:
    0
    выше смотри
    уже выложил