題目描述
有n個“皇后”,擺在一個n*n的棋盤裏,要求任意兩個不能互相攻擊(同行、同列、同對角線可互相攻擊)
求方案數
輸入
輸出
樣例輸入
8
樣例輸出
92
附AC碼:
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
int n,ans=0;
int a[201],b[201],c[201],f[201];
void out(){
ans++;
}
void dfs(int x){
for(int i=1;i<=n;i++)
if(a[i]==0 && b[i+x]==0 && c[i-x+20]==0){
a[i]=1;b[i+x]=1;c[i-x+20]=1;
f[x]=i;
if(x<n)
dfs(x+1);
else out();
a[i]=0;b[i+x]=0;c[i-x+20]=0;
}
}
int main(){
scanf("%d",&n);
dfs(1);
printf("%d\n",ans);
return 0;
}