编辑代码

 #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; 
}