Как перебрать все перестановки и о факториальном разложении натуральных чисел

Задачи о переборе всех возможных перестановок заданного множества сущностей возникают в программировании достаточно часто. Как известно из комбинаторики, число возможных перестановок n предметов равно попросту факториалу числа n

n! = n * (n — 1) * (n – 2) * … * 3 * 2 * 1


Факториал – достаточно быстро растущая функция, об этом говорит ее асимптотика (формула Стирлинга), хотя достаточно посмотреть на факториалы нескольких первых членов натурального ряда:


1! 1

2! 2

3! 6

4! 24

5! 120

6! 720

7! 5 040

8! 40 320

9! 362 880

10! 3 628 800

11! 39 916 800

12! 479 001 600

13! 6 227 020 800

14! 87 178 291 200

15! 1 307 674 368 000


Как видно, факториал 13-ти уже не умещается в тип данных long.


Если задаться целью найти однозначное соответствие между номером перестановки — числом в диапазоне от 1 до n! – и ее реализацией, можно натолкнуться на один очень интересный математический факт.
Читать дальше →
Как перебрать все перестановки и о факториальном разложении натуральных чисел
Source: habrahabr

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *