#include <stdio.h> #include <stdlib.h> int Permutations(int* group,int groupsize, int* permut,const int permutsize); int main() { int group={1,2,3,4}; int size=sizeof(group)/sizeof(int); int* permut=(int*)malloc(size*sizeof(int)); int N; N=Permutations(group,size,permut,0); printf("\n N=%d \n", N); free(permut); getchar(); return 0; } int Permutations(int* group,int groupsize, int* permut,const int permutsize) { int i,j,result=0; int* smaller; if(groupsize==0) { for(i=0;i<permutsize;++i) printf("%d",permut); printf("\n"); return 1; } else { result=0; for (i=0;i<groupsize;++i) { smaller=(int*)malloc((groupsize-1)*sizeof(int)); for(j=0;j<groupsize-1;++j) smaller=group; //new group without 'i' term permut=group; //add 'i' element for printing latter.. result+=Permutations(smaller,groupsize-1,permut,permutsize+1); //Recursion free(smaller); } return result; } }
|