生成1-n的排列。
代码:
#include<stdio.h>
void pl(int n,int a[],int cur){ int i,j,ok; if(cur==n) //递归结束条件 { for(i=0;i<n;i++) printf("%d",a[i]); printf("\n"); } else for(i=1;i<=n;i++) //从1开始枚举 { ok=1; for(j=0;j<cur;j++) //如果cur之前已经出现过i if(a[j]==i) ok=0; if(ok) //如果cur之前没有出现过i,那么讲i存到a[cur] { a[cur]=i; pl(n,a,cur+1); //递归调用 } }}int main(){ int num[10000],cur=0,n; scanf("%d",&n); pl(n,num,cur); return 0;}