#include <bits/stdc++.h>
using namespace std;
#define FAST ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
int a[50] = {0},b[50] = {0},c[50] = {0};
int vir[50] = {0};
int n,ans = 0;
void dfs(int x){
if(x > n){
ans++;
if(ans <= 3){
for(int i = 1;i <= n;i++) cout << vir[i] <<' ';cout << endl;
}
return ;
}
for(int i = 1;i <= n;i++){
if(a[i] || b[i + n - x] || c[i + x - 1]) continue;
a[i] = b[i + n - x] = c[i + x - 1] = 1;
vir[x] = i;
dfs(x + 1);
a[i] = b[i + n - x] = c[i + x - 1] = 0;
}
return ;
}
int main(){
cin >> n;
dfs(1);
cout << ans;
return 0;
}
开始我数组开的15,然后从第四个点过不了,然后我改成20,本地输入13能跑出来,但是交上去过不了,最后改成50过了