Доброго времени суток, читатели, зрители моего канала programmer's notes, любители языка Python. Не забывайте подписываться и писать свои
комментарии к моим статьям и видео.
Алгоритм генерации размещений на языке Python
Размещения из n по m означает следующее. Пусть имеется список из n элементов. Найдём все его подсписки, состоящие из m элементов. Для каждого подсписка найдём все его перестановки и в совокупности получим все размещения. Например, есть список
1 2 3
т.е. n=3. Найдём все размещения из 3 по 2 (m=2). Количество размещений вычисляется по формуле n!/(n-m)! в результате получаем 6. Найдём в начале все подсписки
1 2
2 3
1 3
с учётом всех перестановок получим ещё 3 списка
2 1
3 2
3 1
в совокупности это и будут все размещения.
Генерацию всех размещений легко получить из программы генерации перестановок. В сущности это обобщение генерации перестановок. При n==m мы должны получить генерацию перестановок. Для этого достаточно ввести ещё один параметр, определяющий m, и останавливать генерацию, когда для отрезка будет равна этому значению.
Результат выполнения
1 2 3
1 2 4
1 3 2
1 3 4
1 4 2
1 4 3
2 1 3
2 1 4
2 3 1
2 3 4
2 4 1
2 4 3
3 1 2
3 1 4
3 2 1
3 2 4
3 4 1
3 4 2
4 1 2
4 1 3
4 2 1
4 2 3
4 3 1
4 3 2
И вариант без использования в рекурсивной функции глобальных переменных
Следующая статья по комбинаторике на Python...
Предыдущая статья по комбинаторике на Python...
Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.