//input 8 12.61s consumed //input 8 11.72s consumed remove '-' in the printed array #include <stdio.h> #include <string.h> #include <stdlib.h> #define LENGTH 27 int n=0; void permute(int[],int,int); void swapint(int &a,int &b); void printIntArray (int[],int); //Function Implementation void swapint(int &a,int &b){ int temp; temp = a; a = b; b = temp; } void printIntArray(int target[],int length){ int i; for (i=0;i<length;i++) printf ("%d",target[i]); printf ("\n"); } void permute(int target[],int begin,int end){ if (begin==end) { printIntArray(target,end+1); n++; return; } int i; for (i=begin;i<=end;i++){ swapint(target[begin],target[i]); permute(target,begin+1,end); swapint(target[begin],target[i]); } } //test Functions void testPermute(){ int len; scanf ("%d",&len); int *testcase =(int *)malloc(len*sizeof(int)); int i; for (i=0;i<len;i++) testcase[i]=i+1; permute(testcase,0,len-1); } //Main Function void main(){ testPermute(); printf ("n=%d",n); }
z_yd@tom.com