数字全排列
#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