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

FastCode 1534 13 21 67

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

Автор: ildarovich

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

См. также

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

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

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

СоздатьЭлементФормы

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

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

Многопоточная пометка удаления документов по организации за период

Найти заказы, количества во всех строках которых меньше либо равны нулю

ДобавитьЭлементМассиваОписанияВозможныхТиповКонтактов (БСП)

Модератору