1. 程式人生 > >C語言n個數全排列演算法

C語言n個數全排列演算法

#include <stdio.h> 
#define MAX 1000000 
int first[MAX]; 
int last[MAX]; 
int N; 
 
void print()
    { 
        int i; 
        for(i = 0; i < N-1; i++){
        printf("%d ", last[i]); 
    }
        printf("%d", last[i]);
        printf("\n"); 
    } 
void cal(int step)
    { 
        int i; 
        if(step == N) 
        print(); 
        else
            { 
                for(i = 0; i < N; i++)
                    { 
                        if(!first[i])
                            { 
                                first[i] = 1; 
                                last[step] = i + 1; 
                                cal(step + 1); 
                                first[i] = 0; 
                            } 
                    } 
            } 

 
int main()
    { 
        scanf("%d", &N); 
        cal(0); 
    }