题目描述
有n个“皇后”,摆在一个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; }