题目描述
输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。
输入输出格式
输入格式:
n(1≤n≤9)
输出格式:
由1~n组成的所有不重复的数字序列,每行一个序列。每个数字保留5个常宽。
输入输出样例
输入样例#1: 复制
3
输出样例#1: 复制
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1
#include <bits/stdc++.h>
#define maxn 2005555
typedef long long ll;
using namespace std;
ll a[maxn],flag[maxn];
ll n;
void dfs(int k)
{
if(k > n)
{
for(int i = 1; i <= n; i ++)
{
cout << setw(5) << a[i];
}
cout << endl;
return ;
}
for(int i = 1; i <= n; i ++)
{
if(flag[i] == 0)
{
flag[i] = 1;
a[k] = i;
dfs(k+1);
flag[i] = 0;
}
}
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin >> n;
dfs(1);
return 0;
}