1 #include <iostream>
2
3 using namespace std;
4 int ans;
5 int printf(int arr[],int n)
6 {
7 for(int i=0;i<n;i++)
8 {
9 cout<<arr[i]<<' ';
10 }
11 ans++;
12 cout<<endl;
13 }
14 void swap(int arr[],int i,int j)
15 {
16 int temp=arr[i];
17 arr[i]=arr[j];
18 arr[j]=temp;
19 }
20 void perm(int arr[],int p,int q)
21 {
22 if(p==q) //循环完成条件就是p==q
23 {
24 printf(arr,q+1);
25 }
26 for(int i=p;i<=q;i++)
27 {
28 swap(arr,p,i);
29 perm(arr,p+1,q);
30 swap(arr,p,i); //换完之后需要将换掉的两个数字再换回来
31 }
32 }
33 int main()
34 {
35 int arr[5]={1,2,3,4,5};
36 int n=sizeof(arr)/sizeof(arr[0]);
37 perm(arr,0,n-1);
38 cout<<ans<<endl;
39 }