一、题目描述
![在这里插入图片描述](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
二、思路分析
若R = {1, 2, 3} 对应的全排列就是
1 3 2
2 1 3
2 3 1
3 2 1
3 1 2
进行层次分析:
![R0 Perm(R)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
三、递归程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #include<iostream> using namespace std; #if 1 void Perm(int* arr, int left, int right) { if (left == right) { for (int i = 0; i <= right; ++i) { cout << arr[i] << " "; } cout << endl; } else { for (int i = left; i <= right; ++i) { swap(arr[left], arr[i]); Perm(arr, left + 1, right); swap(arr[left], arr[i]); } } }
int main() { int arr[] = {1 ,2 ,3}; int len = sizeof(arr) / sizeof(arr[0]); Perm(arr, 0, len - 1); return 0; }
#endif
|
![在这里插入图片描述](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)