39 lines
814 B
C++
39 lines
814 B
C++
//For a,b,c we have sort abc acb bac bca cab cba(6 kinds) This Program is to sort all of the kinds
|
||
#include <iostream>
|
||
using namespace std;
|
||
// 递减n叉树
|
||
// 可能需要包展开,这里先不写,先以3个为主
|
||
template<typename T>
|
||
T* sort(int n, int l, T* tmp, bool* used, T* arr){
|
||
if(n == l){
|
||
cout << "[";
|
||
for(int i = 0;i < n; i++){
|
||
cout << tmp[i] <<" ";
|
||
}
|
||
cout << "]" << endl;
|
||
}
|
||
|
||
for(int i = 0;i < l; i++){
|
||
if(used[i] == false){
|
||
tmp[n] = arr[i];
|
||
used[i] = true;
|
||
sort(n + 1, l, tmp, used, arr);
|
||
used[i] = false; //是否可以删除?不可以,回溯本节点要用
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
int main() {
|
||
int n;
|
||
cin >> n;
|
||
int* tmp = new int[n];
|
||
int* arr = new int[n];
|
||
for(int i = 0;i < n; i++){
|
||
cin >> arr[i];
|
||
}
|
||
bool* used = new bool[n];
|
||
sort(0, n, tmp, used, arr);
|
||
return 0;
|
||
}
|