tsaiwn perm% cat -n perm.c 1 #include 2 /*List all permutations of n characters */ 3 /* Backtracking --- CopyLeft by tsaiwn@csie.nctu.edu.tw */ 4 /* 輸入 n 個不同字母然後印出該些字母的所有排列 */ 5 int val[99], id=-1, nPerm, n; /* n characters */ 6 int getLetters(); 7 void visit(), writePerm(); 8 char letters[99]; 9 int main( ) { 10 while(38) { 11 n = getLetters(); 12 if(n <= 0) break; 13 printf("n=%d\n", n); 14 id = -1; nPerm=0; 15 visit(0); 16 printf("===Total %d permutations.\n", nPerm); 17 } printf("\nBye!\n"); 18 } 19 void visit(int k) { 20 int t; 21 val[k] = ++id; 22 /* printf(" id=%d ", id); /**/ 23 if(id==n) writePerm(); 24 for(t=0; t