n皇后
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
int n;
int res=0;
int a[10]= {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
bool check(int row,int col) {
for(int i=0; i<row; i++) {
int m=i-row;
int n=a[i]-col;
if(a[i]==col||abs(m)==abs(n)) {
return false;
}
}
a[row]=col;
return true;
}
void queen(int row) {
if(row==n){
res++;
return;
}
for(int i=0; i<n; i++) {
if(check(row,i)) {
queen(row+1);
//a[row]=-1; 此处之所以不用变回初始值,是因为上面的check根本用不到这一行的数据
}
}
}
int main() {
scanf("%d",&n);
queen(0);
printf("%d",res);
}