#include<bits/stdc++.h>
using namespace std;
int n;
const int maxn = 13 + 5;
int lie[maxn] = {0}, r[maxn] = {0}, l[maxn] = {0};
int dis[maxn];
int ans = 0;
void dfs(int step)
{
if(step == n)
{
ans++;
if(ans <= 3)
for(int i = 0; i < n; i++)
printf("%d ", dis[i] + 1);
if(ans <= 3)
printf("\n");
return ;
}
for(int i = 0; i < n; i++)
{
if(lie[i] != 1 && l[step + i] != 1 && r[step - i + n] != 1)
{
lie[i] = 1;
l[step + i] = 1;
r[step - i + n] = 1;
dis[step] = i;
dfs(step + 1);
lie[i] = 0;
l[step + i] = 0;
r[step - i + n] = 0;
}
}
}
int main()
{
scanf("%d", &n);
dfs(0);
printf("%d", ans);
return 0;
}
为什么n = 13时wa了?