不许抄!只供参考
#include<bits/stdc++.h>
using namespace std;
int n,ret=0,lie[15],xie1[100],xie2[100];
void dfs(int row){
if(row==n+1){
ret++;
return ;
}
for(int col=1;col<=n;col++){
if(lie[col]==0&&xie1[row+col]==0&&xie2[row-col+10]==0){
lie[col]=1;
xie1[row+col]=1;
xie2[row-col+10]=1;
dfs(row+1);
lie[col]=0;
xie1[row+col]=0;
xie2[row-col+10]=0;
}
}
} int main(){
scanf("%d", &n);
dfs(1);
cout<<ret;
return 0;
}