全排列问题

递归写法:

// A code block
var foo = 'bar';
// An highlighted block

#include<cstdio>
void ArrayArrange(int a[],int begin ,int end)
{
    
    if(begin==end)
    {//终止条件
        for(int i=0;i<=end;++i)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
    }
    else
    {
        for(int i=begin;i<=end;++i)
        {
            int c=a[i];
            a[i]=a[begin];
            a[begin]=c;
            ArrayArrange(a,begin+1,end);
            c=a[i];//回溯
            a[i]=a[begin];
            a[begin]=c;
        }
    }
}
int main()
{
    int a[100];
    for(int i=0;i<5;++i)
    a[i]=i+1;
    ArrayArrange(a,0,4);
    return 0;
}

全排列问题