#include<iostream>
using namespace std;
// 定义回溯函数
void backtrack(int n, int *arr, int k){
// 满足终止条件,打印解
if(k == n){
for(int i = 0; i < n; i++){
cout << arr[i] << " ";
}
cout << endl;
return;
}
// 对于每一步,依次尝试每一个可能
for(int i = 1; i <= n; i++){
// 满足约束
bool flag = true;
for(int j = 0; j < k; j++){
if(arr[j] == i) flag = false;
}
if(!flag) continue;
arr[k] = i;
// 进入下一步
backtrack(n,arr,k+1);
}
}
int main(){
int n = 4;
int* arr = new int[n];
backtrack(n,arr,0);
return 0;
}