Данный код реализует алгоритм Нарайаны на движке 1С 8.2.
Функция ВсеПерестановки(ЧислоЭлементов) Экспорт Результат = Новый Массив; Массив = Новый Массив; Для й=1 По ЧислоЭлементов Цикл Массив.Добавить(й); КонецЦикла; Результат.Добавить(Массив); Пока Истина Цикл Список = Новый СписокЗначений; Список.ЗагрузитьЗначения(Массив); Массив = Список.ВыгрузитьЗначения(); Ключ = Неопределено; Для й=0 по ЧислоЭлементов-2 Цикл Если Массив[й]<Массив[й+1] Тогда Ключ = й; КонецЕсли; КонецЦикла; Если Ключ=Неопределено Тогда Прервать; КонецЕсли; Для й=1-ЧислоЭлементов По 0 Цикл Если Массив[Ключ]<Массив[-й] Тогда Прервать; КонецЕсли; КонецЦикла; Поменять(Массив[Ключ],Массив[-й]); й = Ключ+1; к = ЧислоЭлементов-1; Пока й<к Цикл Поменять(Массив[й],Массив[к]); й = й+1; к = к-1; КонецЦикла; Результат.Добавить(Массив); КонецЦикла; Возврат Результат; КонецФункции Процедура Поменять(А,Б) Т = А; А = Б; Б = Т; КонецПроцедуры
Комментариев нет:
Отправить комментарий