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

FastCode 364 2 8 21

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

Автор: ildarovich

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

Рекомендации

См. также

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

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

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

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

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

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

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

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

РасшифроватьПереборомСертификатов (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз

Комментарии

Модератору