记录编号 123217 评测结果 AAAAAAAAAA
题目名称 N皇后问题 最终得分 100
用户昵称 GravatarEzio 是否通过 通过
代码语言 C++ 运行时间 0.003 s
提交时间 2014-09-26 09:55:09 内存使用 0.31 MiB
显示代码纯文本
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cctype>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <set>
#define For(st,ed,i) for(int i=st;i<=ed;++i)
#define Fordown(st,ed,i) for(int i=st;i>=ed;--i)
#define start(a,flag) memset(a,flag,sizeof(a));
const int INF=0x7fffffff;
int n,sum,upp=1;
void test(int row,int ld,int rd){
    if(row!=upp){
        int pos=upp&~(row|ld|rd);
        while(pos){
            int p=pos&-pos;
            pos-=p;
            test(row+p,(ld+p)<<1,(rd+p)>>1);
        }
    }else ++sum;
}
int main()
{
    freopen("queen.in","r",stdin); 
    freopen("queen.out","w",stdout);
    scanf("%d",&n);
    upp=(upp<<n)-1;
    test(0,0,0);
    printf("%d",sum);
    //system("PAUSE");
    return 0;
}