从小到大输出不可重排列
问题描述:
代码示例:
1 //从小到大不可重排列 2 #include<stdio.h> 3 int A[20]; 4 int n; 5 void permutation(int n,int *a,int cur) 6 { 7 if(cur==n) //如果游标到了最后,输出即可 8 { 9 for(int i=0;i<n;i++) printf("%-3d",a[i]); 10 printf("\n"); 11 return; 12 } 13 else 14 { 15 for(int i=1;i<=n;i++) 16 { 17 int sign=1; 18 for(int j=0;j<cur;j++) 19 { 20 if(a[j]==i) 21 { 22 sign=0; 23 break; 24 } 25 } 26 if(sign) 27 { 28 a[cur]=i; 29 permutation(n,a,cur+1); 30 } 31 } 32 } 33 } 34 int main() 35 { 36 37 while(scanf("%d",&n)==1) 38 permutation(n,A,0); 39 return 0; 40 }
运行结果: