1-n的全排列

来源:互联网 发布:收集手机号码软件 编辑:程序博客网 时间:2024/04/30 08:40
#include<stdio.h>#define n 4int x[n]={1,2,3,4};void swap(int &x,int &y){int t=x;x=y;y=t;}void backtrack(int i){if(i==n){for(int j=0;j<n;j++)printf("%d ",x[j]);printf("\n");}else{for(int j=i;j<n;j++){swap(x[i],x[j]);backtrack(i+1);swap(x[i],x[j]);}}}int main(){backtrack(0);return 0;}
void print_permulation(int n,int* A,int cur){int i,j;if(cur==n){for(i=0;i<n;i++){printf("%d",A[i]);}printf("\n");}else{for(i=1;i<=n;i++){int ok=1;for(j=0;j<cur;j++){if(A[j]==i){ok=0;}}if(ok){A[cur]=i;print_permulation(n,A,cur+1);}}}}