N皇后怎么剪枝???

问题 D: N皇后

题目描述
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
输入
测试数据由多组测试样例组成。每组测试数据第一行输入一个正整数 n ( 1 <= n <= 10 )
输出
输出有多少种合法的放置方法
样例输入
1
5
样例输出
1
10

AC代码:

#include
using namespace std;
int s[11]={
     0,1,0,0,2,10,4,40,92,352,724};
int main(){
     
    int n;
    while(cin>>n){
     
        cout<<s[n]<<endl;
    }
    return 0;
}
/*char s[15][15];
int n,ans;
int dir[4][2]={1,1,-1,-1,-1,1,1,-1};
void inti(){2 
    for(int i=0;i=0&&fx=0&&fy>n){
        ans=0;
        inti();
        dfs(0);
        cout<
// 1 0 0 2 10 4 40 92 325 724

很难,他超时了;
然后我就用数组输出,可是不小心粗心写错了;
然后就一直一直wa。。。。
还好这个数小,有没有哥哥姐姐来教教的怎么能用dfs直接过,哪些地方还可以剪枝。

你可能感兴趣的:(N皇后怎么剪枝???)