从小到大输出不可重排列

问题描述: 

 

代码示例:

 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 }

运行结果:

 

posted @ 2020-04-19 10:01  kakusan  阅读(151)  评论(0编辑  收藏  举报