У цій задачі необхідно згенерувати всі перестановки чисел від до . Це можна зробити, наприклад, використовуючи функцію next_permutation.
Реалізація алгоритму
Масив буде використовуватися для генерації перестановок.
int m[10];Читаємо вхідне значення .
scanf("%d",&n);Ініціалізуємо масив початковою перестановкою 1~2~3~...~n, починаючи з першого індексу.
for (i = 1; i <= n; i++)
m[i] = i;Використовуючи функцію next_permutation, генеруємо всі перестановки — від лексикографічно найменшої до лексикографічно найбільшої.
do
{Виводимо кожну згенеровану перестановку в окремому рядку.
for (i = 1; i <= n; i++)
printf("%d ",m[i]);
printf("\n");
} while (next_permutation(m + 1, m + n + 1));Реалізація алгоритму — вектор
Вектор буде використовуватися для генерації перестановок.
vector<int> v;Читаємо вхідне значення .
scanf("%d", &n);Ініціалізуємо масив початковою перестановкою 1~2~3~...~n, починаючи з нульового індексу.
v.resize(n);
for (i = 0; i < n; i++)
v[i] = i + 1;Використовуючи функцію next_permutation, генеруємо всі перестановки — від лексикографічно найменшої до лексикографічно найбільшої.
do
{Виводимо кожну згенеровану перестановку в окремому рядку.
for (i = 0; i < n; i++)
printf("%d ", v[i]);
printf("\n");
} while (next_permutation(v.begin(), v.end()));