#include <bits/stdc++.h>
using namespace std;
const int N = 20;
int h[N], l[N], r[N];
int path[N];
int ans = 0;
int n;
void dfs(int k) {
if (k == n + 1) {
if (ans <= 2) {
for (int i = 1; i <= n; i ++)
printf("%d ", path[i]);
printf("\n");
}
ans ++;
return ;
}
for (int i = 1; i <= n; i ++) {
if (h[i] != 1 && l[n + k - i] != 1 && r[k + i] != 1) {
h[i] = l[n + k - i] = r[k + i] = 1;
path[k] = i;
dfs(k + 1);
h[i] = l[n + k - i] = r[k + i] = 0;
}
}
}
int main() {
scanf("%d", &n);
dfs(1);
cout << ans;
return 0;
}
最后一个点wa了,不知道是哪里错了,求大佬帮助Orz