Calculate the full permutation of a (the solution space is permutation tree)

#include<iostream>
using namespace std;

void swap(int &x,int &y);
void dispasolution(int a[],int n);
void dfs(int a[],int n,int i);

int main()
{
    
    
    int a[]={
    
    1,2,3};
    int n=sizeof(a)/sizeof(a[0]);
    cout<<"a的全排列"<<endl;
    dfs(a,n,0);
    return 0;
}
void swap(int &x,int &y)
{
    
    
    int tmp=x;
    x=y;
    y=tmp;
}
void dispasolution(int a[],int n)
{
    
    
    cout<<' '<<'(';
    for(int i=0;i<n-1;i++)
        cout<<a[i]<<',';
    cout<<a[n-1]<<')';
}
void dfs(int a[],int n,int i)
{
    
    
    if(i>=n)dispasolution(a,n);
    else{
    
    
        for(int j=i;j<n;j++){
    
    
            swap(a[i],a[j]);
            dfs(a,n,i+1);
            swap(a[i],a[j]);
        }
    }
}

Guess you like

Origin blog.csdn.net/weixin_46112487/article/details/108967662