1 #include<iostream>
2 #include<cmath>
3 using namespace std;
4 int tot;
5 int vis[1001];// 列
6 int zd[1001];//左方向对角线
7 int yd[1001];//右方向对角线
8 int n;
9 void f(int k)
10 {
11 if(k==n)
12 {
13 tot++;
14 return;
15 }
16 else
17 {
18 for(int j=1;j<=n;j++)
19 {
20 if(vis[j]==0&&zd[j+k]==0&&yd[k-j+n]==0)
21 {
22 vis[j]=1;
23 zd[j+k]=1;
24 yd[k-j+n]=1;
25 f(k+1);
26 vis[j]=0;
27 zd[j+k]=0;
28 yd[k-j+n]=0;
29 }
30 }
31 }
32 }
33 int main()
34 {
35
36 cin>>n;
37 f(0);// 一定是0,千万别是1 ,。。。。一位调试了1个小时的oier的忠告
38 cout<<tot;
39 return 0;
40 }