[转载]数组的全排列问题
申明:转自http://blog.csdn.net/wencheng2998/article/details/5971194
1 #include <iostream> 2 using namespace std; 3 int cnt = 0;//累计全排列的总数 4 5 6 void swap(char *a, char *b) 7 { 8 int temp; 9 temp = *a; 10 *a = *b; 11 *b = temp; 12 } 13 //k表示从下表为k的元素开始排列,排列的范围k到m 14 void perm(char list[], int k, int m) 15 { 16 int i; 17 if (k == m) 18 { 19 for (i = 0; i <= m; i++) 20 { 21 cout << " " << list[i]; 22 } 23 cout << endl;//没输出一组排序,输出一个换行符 24 cnt++; 25 } 26 else 27 { 28 for (i = k; i <= m; i++) 29 { 30 swap(&list[k], &list[i]); 31 perm(list, k + 1, m); 32 swap(&list[k], &list[i]); 33 } 34 } 35 } 36 int main() 37 { 38 char list[] = "12345"; 39 perm(list, 0, 4); 40 cout << "全排列的总数是:" <<cnt << endl; 41 return 0; 42 }
努力,生活总会有改变