给出一个n, 请输出n的所有全排列
读入仅一个整数n (1<=n<=10)
一共n!行,每行n个用空格隔开的数,表示n的一个全排列。并且按全排列的字典序输出。
3
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
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 }