#include<iostream>
#include<cstdio>
using namespace std;
#define N 15
int n,sum,temp = 1;
int a[N][N];
int path[N];
bool lie[N],xie1[N],xie2[N];
void dfs(int x)
{
if (x == n)
{
if (temp <= 3)
{
for (int i = 0; i < n; i++)printf("%d ",path[i]+1);
printf("\n");
temp++;
}
sum ++;
return ;
}
for (int i = 0; i < n;i ++)
{
if (!lie[i] && !xie1[x + i] && !xie2[n - x + i])
{
lie[i] = xie1[x+i] = xie2[n-x+i] = true;
path[x] = i;
dfs(x+1);
lie[i] = xie1[x+i] = xie2[n-x+i] = false;
}
}
}
int main()
{
scanf("%d",&n);
dfs(0);
printf("%d\n",sum);
return 0;
}
为啥开15的时候n大于9就不行了呀?