По данному числу n выведите
все перестановки чисел от 1 до n в лексикографическом порядке.
Вход. Одно число n (0
< n < 10).
Выход. Вывести все
перестановки чисел от 1 до n в
лексикографическом порядке. Перестановки выводятся по одной в строке, числа в
перестановке выводятся без пробелов.
Пример
входа |
Пример
выхода |
3 |
123 132 213 231 312 321 |
генерация
перестановок
Анализ алгоритма
Сгенерируем все
перестановки при помощи функции next_permutation.
Реализация алгоритма
Текущую
перестановку храним в массиве m.
int m[11];
Читаем значение n.
Заносим перестановку {1, 2, …, n} в
массив m начиная с нулевой позиции.
scanf("%d",&n);
for(i = 0; i < n; i++) m[i] = i + 1;
Генерируем все перестановки в массиве m при помощи функции
next_permutation.
do
{
Выводим текущую перестановку.
for(i = 0; i < n; i++)
printf("%d",m[i]);
printf("\n");
} while(next_permutation(m,m+n));