输入一个整数n(n <= 9),输出1、2、3、······、n这n个数的全排列(按照字典序输出)。
Input
一个整数n
Output
多行,每行表示一种排列,行内使用空格分隔相邻两数。
Sample
Inputcopy Outputcopy 3 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1
#include <iostream>
using namespace std;
int n;
int p[20];
int book[20]= {0};//用来标记用过没有
void dfs(int x)
{
if(x==n)//位数达到就输出
{
for(int i=0; i<n; i++)
cout << p[i] << ' ';
cout << endl;
return ;
}
for(int i=1; i<=n; i++)
{
if(book[i]==0)
{
p[x]=i;
book[i]=1;
dfs(x+1);//递归
book[i]=0;//回溯
}
}
return;
}
int main()
{
cin >> n;
dfs(0);
}