思路

递归

Code

#include <bits/stdc++.h>

using namespace std;

const int N = 20;

bool st[N];

void dfs(int u,string s){
    if(u==8) {
        for(int i=0;i<8;i++) cout<<s[i]<<" \n"[i==7];
    }
    if(u>=8) return;
    for(int i=1;i<=8;i++){
        if(!st[i]){
            st[i]=true;
            string ss=s;
            ss+=i+'0';
            dfs(u+1,ss);
            st[i]=false;
        }
    }
}

int main(){
    dfs(0,"");
    return 0;
}