//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 using namespace std; // 递减n叉树 // 可能需要包展开,这里先不写,先以3个为主 template 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; }