C语言-数字的全排列

Posted 灯火阑处

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言-数字的全排列相关的知识,希望对你有一定的参考价值。

输入一个数字序列a1,a2,...,an,将该序列进行排列,并输出每一种排列方式。例如:1,3,5.该数列就有6种排列方式。利用递归不难实现

#define max 100

void Perm(int a[], int n, int s, int r[], int m) 
    int i, j, k, flag = 0;
    int b[max];
    for (i = 0; i < n; ++i) 
        flag = 1;
        r[s] = a[i];
        j    = 0;
        for (k = 0; k < n; k++)
            if (i != k) 
                b[j] = a[k];
                j++;
            
        
        Perm(b, n - 1, s + 1, r, m);
    
    if (flag == 0) 
        printf("\\n");
        for (k = 0; k < m; k++)
            printf("%d", r[k]);
        printf("\\n");
    

int main(int argc, const char *argv[]) 
    int a[max], r[max];
    int i, n;
    printf("Please input the number of digit in the array\\n");
    scanf("%d", &n);
    printf("Please input a string for array\\n");
    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);
    Perm(a, n, 0, r, n);
    return 0;

结果:

以上是关于C语言-数字的全排列的主要内容,如果未能解决你的问题,请参考以下文章

C语言数字全排列的问题(急!!)求C代码和算法

求n个数的全排列,n不定。用c语言。用于银行家算法中求安全序列

C语言的全排列问题!急!

c语言中,如何输出一个数组的全排列!如a[3]=1,2,3 要求输出1 2 3,1 3 2,

c语言 给出一个数怎样输出该数的全排列

Java与算法之 - 数字全排列