数字全排列

#include <stdio.h>
void  swap(int A[],int i,int j)
{
    int tmp=0;
    tmp=A[i];
    A[i]=A[j];
    A[j]=tmp;
}
void Print(int A[],int n)
{
    for (int i=0;i<n;i++)
    {
        printf("%d ",A[i]);
    }
    printf("\r\n");
}
void perm(int A[],int p,int q)
{
    if (p==q)
    {
        Print(A,q+1);
    }else
    {
        for (int i=p;i<=q;i++)
        {
            swap(A,p,i);//第一位开始交换
            perm(A,p+1,q);//后面进行全排列
            swap(A,p,i);//恢复环境
        }
    }
}
int main()
{
    int arry[3]={1,2,3};
    perm(arry,0,2);
    int arry1[5]={1,2,3,4,5};
    perm(arry1,0,4);

    return  0;
}

/*参照:https://video.tudou.com/v/XMTc5MjQ3NTU0MA==.html?__fr=oldtd */

典型深度优先算法:https://blog.csdn.net/weixin_43272781/article/details/82959089

 

posted @ 2020-02-16 11:07  cheshulin  阅读(160)  评论(0编辑  收藏  举报