枚举排列

枚举排列题解
问题是将n个数排列出所有的结果,自然用到枚举法将个个可能的结果排除,中间需要判断,巧用ok的值。

 1 #include<stdio.h>
 2 int a[300];
 3 int n;
 4 void paixu(int cur)
 5 {
 6     int i,t,ok;
 7     if(cur==n+1)
 8     {
 9         for(i=1; i<=n; i++)
10             printf("%d ",a[i]);
11             printf("
");
12     }
13     else
14     {
15         for(i=1; i<=n; i++)
16         {
17             ok=1;
18             for(t=1; t<cur; t++)
19                 if(a[t]==i)
20                 {
21                     ok=0;
22                     break;
23                 }
24             if(ok)
25             {
26                 a[cur]=i;
27                 paixu(cur+1);
28             }
29         }
30     }
31 }
32 int main()
33 {
34     int i,g;
35     scanf("%d",&n);
36     paixu(1);
37     return 0;
38 }
原文地址:https://www.cnblogs.com/dongq/p/4151754.html