Найти в Дзене
Old Programmer

Рекурсия в программировании (язык C). Статья 5 (генерация перестановок)

Все ссылки на статьи и ролики моего канала Old Programmer:

Программирование. Тематическое оглавление моего Zen-канала (Old Programmer)
Old Programmer17 августа 2020

А здесь все мои ресурсы по рекурсивному программированию.

Мои материалы по рекурсивному программированию
Old Programmer20 сентября 2020

Другие мои статьи по рекурсии

Рекурсия в программировании (Python). Статья 4
Old Programmer26 июля 2020
Рекурсия в программировании (глобальные переменные). Статья 3
Old Programmer21 июля 2020
О рекурсии в программировании. Статья 2
Old Programmer14 июля 2020
О рекурсии в программировании. Статья 1
Old Programmer12 июля 2020

Давно не писал о рекурсии. Одна из моих любимых тем. Сегодня задача прямо предназначенная для рекурсивного программирования. Генерация перестановок. Когда-то я решал какую-то задачу и написал этот алгоритм. Конечно он не оригинален, в литературе вы встретите разные его вариации. Мне он нравится, потому что, как мне кажется, он наиболее понятен и не требует дополнительных математических знаний.

А это статья из моего нового канала, посвященная языку Python, посвящённая перестановкам

Реализация алгоритма генерации перестановок на языке C

Программа, реализующая указанный выше алгоритм представлена в main40.c. Смысл алгоритма заключается в том, что по очереди выбираются элементы массива, которые должны быть первыми в наборе, затем рекурсивно выбирается следующий элемент и т.д. Сами числа хранятся в массиве, состоящем из структур. В каждой структуре хранится само число и флаг, показывающий, что данное число уже использовалось в перестановке или не использовалось. Флаг возводится при каждом рекурсивном вызове (rec1) и сбрасывается при возврате из вызова. В программе есть недостаток, она не учитывает, что введенные для перестановки числа могут совпадать. Ну, надеюсь, вы сами подумаете над этой проблемой.

Ну вот и все, пока! Программируйте рекурсивно и не рекурсивно. Подписывайтесь на мой канал Old Programmer.

Фрагмент программы генерации перестановок (main40.c)
Фрагмент программы генерации перестановок (main40.c)

Рекомендуем почитать
Документы, вакансии и контакты