题目描述
输入一个正整数n, 请按照字典序输出1-n的全排列。
输入
输入包含多组测试用例。
每组数据占一行,包含一个正整数n(n<10)。
输出
每个排列输出一行,每个数字后面跟一个空格。
具体格式参加样例的输出。
样例输入 Copy
3 2
样例输出 Copy
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 1 2 2 1
#include<iostream>
#include<cstring>
using namespace std;
int n;
int vis[11];
void dfs(int step) {
if (step == n + 1) {
for (int i = 1; i <= n; i++) {
if(vis[i])
printf("%d ", i);
}
printf("\n");
return;
}
for (int i = 1; i <= n; i++) {
if (vis[i] == 0) {
vis[i] = 1;
dfs(step + 1);
vis[i] = 0;
}
}
}
int main()
{
while (scanf("%d", &n) == 1) {
memset(vis, 0, sizeof(vis));
dfs(1);
}
return 0;
}