Алгоритм перебора всех возможных сочетаний элементов

FastCode 64 8

На входе массив из элементов: {X1, X2, ..., Xm}. Требуется составить все возможные сочетания элементов без учета размещения: {X1}, {X2}, ..., {Xm}, {X1, X2}, ..., {X1, Xm},...,{X2, Xm},...,{X1, X2, ..., Xm}. Другими словами, требуется получить все возможные подмножества множества элементов, заданного в исходном массиве. Результат функции - массив списков значений, содержащих разные подмножества элементов исходного массива. Массив включает и пустое подмножество (на последнем месте).

Автор: ildarovich

Функция ВсеПодмножества(Множество) 
    Ответ = Новый Массив;
    Ответ.Добавить(Новый СписокЗначений);
    Для ИндексЭлемента = 0 По Множество.Количество() - 1 Цикл
        Для ИндексВарианта = 0 По Ответ.Количество() - 1 Цикл
            Ответ.Добавить(Ответ[ИндексВарианта].Скопировать());
            Ответ[ИндексВарианта].Добавить(Множество[ИндексЭлемента])
        КонецЦикла
    КонецЦикла;
    Возврат Ответ
КонецФункции
FastCode - бесплатный сервис для программистов 1С

Похожие публикации

Программное получение СочетаниеКлавиш

ПроверитьВозможностьЗаменыЭлементовСтрока (БСП)

ПроверитьВозможностьЗаменыЭлементов (БСП)

ЭлементОтбораСвойствоАлгоритмЗначения (БСП)

ЕстьПравоДобавления (БСП)

Модератору