时间限制: 1 s
空间限制: 128000 KB
题目等级 : 黄金 Gold
题目描述 Description
给出一个n, 请输出n的所有全排列
输入描述 Input Description
读入仅一个整数n (1<=n<=10)
输出描述 Output Description
一共n!行,每行n个用空格隔开的数,表示n的一个全排列。并且按全排列的字典序输出。
样例输入 Sample Input
3
样例输出 Sample Output
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
数据范围及提示 Data Size & Hint
1 #include<iostream>
2 #include<cstring>
3 #include<cstdio>
4 using namespace std;
5 int n;
6 int a[1001];
7 int b[1001];
8 void work(int k)
9 {
10 if(k==n+1)
11 {
12 for(int i=1;i<=n;i++)
13 {
14 printf("%d ",a[i]);
15 }
16 printf("\n");
17 //cout<<endl;
18 return;
19 }
20 else
21 {
22 for(int i=1;i<=n;i++)
23 {
24 if(b[i]==0)
25 {
26 a[k]=i;
27 b[i]=1;
28 work(k+1);
29 a[k]=0;
30 b[i]=0;
31 }
32 }
33
34 }
35 }
36 int main()
37 {
38
39 cin>>n;
40 work(1);
41 return 0;
42 }