问题描述
把 1∼n1∼n 的 nn 个正整数排成一行后随机打乱顺序,按字典序输出所有不同的方案。
输入格式
输入一行,包含一个正整数 nn。(1≤n≤8)(1≤n≤8)
输出格式
输出 n!n! 行,每一行为一种方案。字典序较小的先输出。
cpp
#include <stdio.h>
#include <stdbool.h>
int n;
int path[15];
bool st[15];
void dfs(int u)
{
if (u > n)
{
for (int i = 1; i <= n; i++)
{
printf("%d ", path[i]);
}
printf("\n");
return;
}
for (int i = 1; i <= n; i++)
{
if (st[i] == false)
{
path[u] = i;
st[i] = true;
dfs(u + 1);
st[i] = false;
}
}
}
int main()
{
if (scanf("%d", &n) != 1) return 0;
dfs(1);
return 0;
}