#include <iostream>
#include <cstring>
using namespace std;
void dfs(int row);
int n,sum=0;
int sol[100];
int main() {
cin>>n;
memset(sol,0,sizeof(sol));
dfs(0);
cout<<sum<<endl;
return 0;
}
void dfs(int row){
for (int col=0;col<n;col++){
bool ok = true;
for (int i=0;i<row;i++) {
if (col==sol[i]||col-sol[i]==row-i||sol[i]-col==row-i){
ok = false;
break;
}
}
if(ok){
sol[row] = col;
if(row==n-1){
sum++;
}
else{
dfs(row+1);
}
}
}
}
#include <iostream>
#include <cstring>
using namespace std;
void dfs(int row);
int n,sum=0;
bool shu[100],pie[199],na[199];
int main() {
cin>>n;
memset(shu,0, sizeof(shu));
memset(pie,0, sizeof(pie));
memset(na,0, sizeof(na));
dfs(0);
cout<<sum<<endl;
return 0;
}
void dfs(int row){
for (int col=0;col<n;col++){
if((shu[col] || pie[col+row] || na[n-row+col-1]) == true){
continue;
}
if(row==n-1){
sum++;
}
else{
shu[col]=true;
pie[col+row]=true;
na[n-row+col-1]=true;
dfs(row+1);
shu[col]=false;
pie[col+row]=false;
na[n-row+col-1]=false;
}
}
}
#include <iostream>
#include <cstring>
using namespace std;
void dfs(int row);
int n,sum=0;
int shu,pie,na; //数组变成int变量
int main() {
cin>>n;
dfs(0);
cout<<sum<<endl;
return 0;
}
void dfs(int row){
for (int col=0;col<n;col++){
int j = col+row;
int k = n-row+col-1;
if((((shu>>col)|(pie>>j)|(na>>k))&1)!=0){ //位运算
//或将!=0改为==1
continue;
}
if(row==n-1){
sum++;
}
else{
shu^=(1<<col);
pie^=(1<<j);
na^=(1<<k);
dfs(row+1);
shu^=(1<<col);
pie^=(1<<j);
na^=(1<<k);
}
}
}