Все перестановки множества abc выглядят следующим
образом:
abc, acb,bac,bca,cab,cba. Колличество их - N!
Структуры данных: Массив B[ ] - массив указателей. B[i] равен порядковому
номеру элемента исходной последовательности, стоящему в генерируемой последовательности
на i-м месте.
Алгоритм генерации:
0) B[i]=i
1) Просматриваем массив B слева на право, пока не найдем элемент меньше
предыдущего(обозначим как I).
2) Справа от найденного элемента найдем минимальный J-й элемент, больший
I-го.
3) Меняем I и J местами.
4) Переворачиваем часть массива, расположенную правее новой позиции J-го
элемента.
5) Повторяем, пока не нашли все перестановки.
|