35 lines
954 B
C++
35 lines
954 B
C++
#include <bits/stdc++.h>
|
||
|
||
using namespace std;
|
||
|
||
/**
|
||
* 功能:求数组元素的全排列
|
||
* 作者:黄海
|
||
* 时间:2019-11-27
|
||
* @param list
|
||
* @param low
|
||
* @param high
|
||
*/
|
||
void perm(int list[], int low, int high) {
|
||
if (low == high) //当low==high时,此时list就是其中一个排列,输出list
|
||
{
|
||
for (int i = 0; i <= low; i++)
|
||
cout << list[i];
|
||
cout << endl;
|
||
} else {
|
||
for (int i = low; i <= high; i++)//每个元素与第一个元素交换
|
||
{
|
||
swap(list[i], list[low]);
|
||
perm(list, low + 1, high); //交换后,得到子序列,用函数perm得到子序列的全排列
|
||
swap(list[i], list[low]);//最后,将元素交换回来,复原,然后交换另一个元素
|
||
}
|
||
}
|
||
}
|
||
|
||
int main() {
|
||
//读入输出优化的强迫症
|
||
ios::sync_with_stdio(false);
|
||
int s[] = {1,2,3,4,5};
|
||
perm(s,0,4);
|
||
return 0;
|
||
} |