全排列

 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 }

 

posted @ 2022-02-07 18:07  九点的日落  阅读(16)  评论(0)    收藏  举报