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

FastCode 1535 13 21 67

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

Автор: ildarovich

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

См. также

Реализовать возможность давать подсказки алгоритму определения типизации переменных.

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

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

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

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

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

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

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

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

Модератору