八皇后问题
#include<iostream>
#include<cstring>
using namespace std;
const int MAXN=100;
int x[MAXN];
int n,sum=0;
int place(int k)
{
for(int j=0;j<k;j++){
if(abs(k-j)==abs(x[j]-x[k])||(x[j]==x[k])){
return 0;
}
}
return 1;
}
void backtrack(int t)
{
if(t==n){
sum++;
}
else{
for(int i=0;i<n;i++){
x[t]==i;
if(place(t)){
backtrack(t+1);
}
}
}
}
int main()
{
memset(x,0,sizeof(x));
cin>>n;
backtrack(0);
printf("%d\n",sum);
return 0;
}