用递归实现N个不同元素的全排列。
1 #include<iostream> 2 inline void swap(char &a, char &b); 3 void perm(char list[], int k, int m) 4 { 5 int i; 6 if(k == m) 7 { 8 for(i = 0; i <= m; i++) 9 std::cout << list[i]; 10 std::cout << std::endl; 11 } 12 else 13 { 14 for(i = k; i <= m; i++) 15 { 16 swap(list[k], list[i]); 17 perm(list, k+1, m); 18 swap(list[k], list[i]); 19 } 20 } 21 } 22 inline void swap(char &a, char &b) 23 { 24 char temp = a; 25 a = b; 26 b = temp; 27 } 28 int main() 29 { 30 char list[] = {'a','b','c'}; 31 perm(list, 0, 2); 32 33 return 0; 34 }