N个数的全排列 -------指定排头法

输入 一个整数N  再输入N个整数

输出 N个数的全排

代码如下:

 1 #include<stdio.h>
 2 #include<string.h>
 3 #define N 100
 4 
 5 int a[2][N] = {0};
 6 int p[N] = {0};
 7 
 8 void dfs(int k, int n)
 9 {
10     int i;
11 
12     if(k == n)
13     {
14         for(i = 0; i < n - 1; i++)
15             printf("%d ", p[i]);
16 
17             printf("%d
", p[i]);
18     }
19     else
20     {
21         for(i = 0; i < n; i++)
22         {
23             if(a[0][i] == 0)
24             {
25                 p[k] = a[1][i];
26                 a[0][i] = 1;
27 
28                 dfs(k+1, n);
29 
30                 p[k] = a[0][i] = 0;
31             }
32         }
33     }
34 
35     return;
36 }
37 
38 int main()
39 {
40     int n, i;
41 
42     while(scanf("%d", &n) != EOF)
43     {
44         memset(a, 0, sizeof(a));
45         memset(p, 0, sizeof(p));
46         for(i = 0; i < n; i ++)
47             scanf("%d", &a[1][i]);
48 
49         dfs(0, n);
50     }
51 
52     return 0;
53 }
原文地址:https://www.cnblogs.com/yishilin/p/4241110.html