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