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

FastCode 1521 12 22 67

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

Автор: ildarovich

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

См. также

Прошу добавить в API простую возможность перевызывать нажатие сочетания клавиш после выполнения команды скрипта

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

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

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

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

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

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

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

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

Модератору