n皇后

題目描述

有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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章